运行Python 3.6.1,我试图从我项目中的另一个包中导入一个文件(world.py
)。
我的目录结构:
+-- test_project
| +-- sub_project1
| | +-- __init__.py
| | +-- hello.py
| +-- sub_project2
| | +-- __init__.py
| | +-- world.py
hello.py
:
def say_hello():
return("Hello ")
world.py
:
from test_project.sub_project1.hello import say_hello
print(say_hello() + "world!")
当我进入sub_project2
目录并运行world.py
时,我会继续这样做:
ModuleNotFoundError: No module named 'test_project'
我尝试将导入语句重写为from sub_project1.hello import say_hello
。我也尝试在PATH环境变量中使用test_project
目录。我已尝试在PATH中使用test_project
的父目录。我已尝试在PATH中使用sub_project2
的目录。我在网上搜索了答案,无法解决我所缺少的问题。
我在这里做错了什么?
答案 0 :(得分:1)
您需要将“hello.py”的路径添加到sys.path
import sys
sys.path.append('../sub_project1')
from hello import say_hello
print(say_hello() + "world!")
输出:
Hello world!
来源是here。这个讨论非常有用。
编辑:因为“sub_project1”有__init__.py
,您可以使用:
import sys
sys.path.append('..') #Adds upper directory sys.path
from sub_project1.hello import say_hello
print(say_hello() + "world!")
答案 1 :(得分:1)
问题是您必须将项目添加到python路径。原因是python首先在这些位置搜索:
包含输入脚本(或当前目录)的目录。
PYTHONPATH(目录名列表,语法与shell变量PATH相同)。
因此,您必须将PYTHONPATH
环境变量添加到目录C:\Users\your_user\dir_before_test_project\