来自不同项目的Python导入包

时间:2017-05-19 13:07:12

标签: python

我试图从其他项目导入一个包,但它没有认识到我试图从中导入的项目。我已经查看了这个问题的各种答案(包括python: import another project module named same with a local module)。

我的项目结构如下:

df %>% sparklyr::sdf_coalesce()

在bar.py中我试图这样做:

Project1
 - __init__.py
 - foo_directory
  - foo.py
  - __init__.py


Project2
 - __init__.py
 -bar_directory
  - bar.py
  - __init__.py

当我尝试导入时,我无法解释为什么它无法识别Project1?

3 个答案:

答案 0 :(得分:2)

您应创建两个包Project1Project2(请注意setup.py

Project1
 - setup.py
 - Project1
  - __init__.py
  - foo_directory
   - foo.py
   - __init__.py

Project2
 - setup.py
 - Project2
  - __init__.py
  - bar_directory
   - bar.py
   - __init__.py

然后安装它们

pip install -e Project1/
pip install -e Project2/

然后你可以简单地做

from Project1.foo_directory import foo

明显的优势:Package2依赖于Package1,但不需要知道它的安装位置。管理所有导入路径由pip和您所处的环境完成(希望是一个虚拟环境)。

答案 1 :(得分:0)

2解决方案:

1-使用PYTHONPATH环境变量。有关详细信息,请参阅this answer

$ export PYTHONPATH=$(PYTHONPATH):/path/to/project1 

2 - 为您的项目创建setup.py,以便安装它们,然后导入它们>

https://docs.python.org/3/distutils/setupscript.html

注意:在app中使用sys.path进行混乱不是推荐的解决方案,因为它不是非常强大而不是跨平台。

答案 2 :(得分:0)

根据Maresh给我的建议,我做了以下(我使用Windows,这就是为什么我无法完全按照他的回答):

在PyCharm中:文件>设置>项目:Project1>项目结构。    - 添加内容根(添加Project2的位置)。    - 申请并确认

然后在bar.py中我可以从Project2导入文件

相关问题