来自不同项目的Python导入包
我试图从不同的项目导入一个包,但它无法识别我试图从中导入的项目。我看过这个问题的各种答案(包括) 我的项目结构如下所示:来自不同项目的Python导入包,python,Python,我试图从不同的项目导入一个包,但它无法识别我试图从中导入的项目。我看过这个问题的各种答案(包括) 我的项目结构如下所示: Project1 - __init__.py - foo_directory - foo.py - __init__.py Project2 - __init__.py -bar_directory - bar.py - __init__.py 在bar.py中,我尝试执行以下操作: import sys sys.path.append('pat
Project1
- __init__.py
- foo_directory
- foo.py
- __init__.py
Project2
- __init__.py
-bar_directory
- bar.py
- __init__.py
在bar.py中,我尝试执行以下操作:
import sys
sys.path.append('path/to/Project2')
from Project1.foo_directory import foo.py
我不明白为什么在我尝试导入时无法识别Project1?2解决方案:
1-使用PYTHONPATH环境变量。有关更多详细信息,请参阅
$ export PYTHONPATH=$(PYTHONPATH):/path/to/project1
2-为您的项目创建setup.py,以便您可以安装它们,从而导入它们>
注意:从应用程序内部搞乱sys.path不是推荐的解决方案,因为它不是真正健壮的,也不是跨平台的 您应该创建两个包,
Project1
和Project2
(注意)
及
然后安装它们
pip install -e Project1/
pip install -e Project2/
然后你就可以简单地
from Project1.foo_directory import foo
明显的优势:Package2依赖于Package1,但不需要知道它安装在哪里。管理所有导入路径是由
pip
和您所在的环境(希望是一个虚拟环境)完成的。根据Maresh给我的建议,我做了以下工作(我使用的是Windows,这就是为什么我不能完全遵循他的答案):
在PyCharm:File>Settings>Project:Project1>项目结构中。
-添加内容根目录(添加Project2的位置)。
-申请并确认
然后,在bar.py中,我能够从Project2导入文件,这可能会有所帮助:如果我不将Project2放入Project1中,则会得到
。。如果是指向本地项目的路径,或者是以svn+、git+、hg+或bzr+开头的VCS url,则本地包必须位于父包内才能安装?@TomSawyer请打开一个新问题
pip install -e Project1/
pip install -e Project2/
from Project1.foo_directory import foo