我试图从其他项目导入一个包,但它没有认识到我试图从中导入的项目。我已经查看了这个问题的各种答案(包括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?
答案 0 :(得分:2)
您应创建两个包Project1
和Project2
(请注意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导入文件