我希望这个问题很容易回答,我只是忽略了。
以下是设置:
foo/
__init__.py
run.py
run.py的内容:
import foo
运行脚本:
$ python run.py
Traceback (most recent call last):
File "run.py", line 1, in <module>
import foo
ImportError: No module named foo
我能解决这个问题的唯一方法是:
run.py的内容:
import sys
import os
path = os.path.abspath(__file__)
sys.path.append(os.path.join(os.path.dirname(path), "../"))
import foo
这样可行,但问题(如果我没有记错的话)是这会将foo /的父目录添加到sys.path
,从而搜索foo /的所有兄弟文件夹中的Python模块。 / p>
我有一个案例,我真的,真的不想那样做。我只是想将一个目录作为模块添加到我的路径中,但我无法弄清楚如何添加该模块而不添加该目录的父目录,从而添加该父目录下的每个其他目录
我在这里俯瞰什么吗?有没有一种简单的方法可以将脚本的父文件夹添加为模块?
答案 0 :(得分:0)
我不太明白为什么run
要导入自己的父包。毕竟,包装只是一种收集模块的方式;它并不意味着拥有自己的重要功能。
包是一种结构化方式 使用Python的模块命名空间 “虚线模块名称”。例如, 模块名称A.B表示a 名为B的子模块名为 A.就像使用模块一样节省 来自不同模块的作者 不得不担心对方的 全局变量名,使用 虚线模块名称保存了作者 多模块软件包,如NumPy或 拥有的Python Imaging Library 担心彼此的模块 名。
您确定不希望run
导入兄弟模块吗?您可以使用relative imports。