【发布时间】:2015-12-22 09:52:34
【问题描述】:
在 Python 中从上一级目录导入模块的正确方法是什么?该目录是一个包含所有这些模块的 Python 包,我有一个包含需要这些模块的代码的子目录。
以下工作正常,但这只是一个 hack。我想要一个推荐的/pythonic的方式。
import sys
sys.path.append("../")
from fruit import Fruit
print("OK")
目录结构:
pkg1
__init__.py
fruit.py
+sub_pkg
__init__.py
recipe.py
fruit.py 的内容
class Fruit:
def get_name(self):
print("Fruit name")
sub_pkg/recipe.py 的内容.. 只是一个导入行:
from fruit import Fruit
当我跑步时:
python recipe.py
它给出了以下错误。
Traceback (most recent call last):
File "recipe.py", line 2, in <module>
from fruit import Fruit
ImportError: No module named fruit
我也试过了:from pkg1.fruit import Fruit,不行。还看了其他类似的问题..
python -m recipe.py 或 python -m sub_pkg/recipe.py 不起作用。
【问题讨论】:
-
from pkg1.fruit import Fruit遇到的错误是什么? -
@Irit:
ImportError: No module named temp.fruit -
您应该将
pkg1添加到您的 PYTHONPATH。 -
如果你在正确的地方安装你的python包,你应该不需要从一个目录中导入。一般来说,上层导入不是一个好主意,它表明程序设计不好。设置系统路径然后像往常一样导入是比下面提到的相对导入更好的解决方案,后者在 python3 上中断。
标签: python