在Python 3中的嵌套包之间导入

梅格达罗尼卡

运行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'

我尝试将import语句重写为from sub_project1.hello import say_hello我也尝试过将test_project目录放在PATH环境变量中。我尝试在PATH中添加test_project目录。我尝试sub_project2在PATH中添加目录。我已经在网上搜索了答案,无法解决我所缺少的问题。

我在这里做错了什么?

阿尔佩伦

您需要将“ hello.py”的路径添加到 sys.path

import sys
sys.path.append('../sub_project1')

from hello import say_hello

print(say_hello() + "world!")

输出:

Hello world!

来源在这里这个讨论真的很有帮助。

编辑:因为“ 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!")

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章