在Python包

时间:2017-06-17 07:19:20

标签: python python-3.x python-module sys

我想在一个目录中加载一个名为mymodule的模块,然后在我的文件系统中的一个目录下加载。在其他地方我用过

import sys
sys.path.append('../mydirectory')
import mymodule # in mydirectory

为了上升一个,然后在一个目录(在一个包中)下来获取一个模块,所以我希望这个工作:

import sys
sys.path.append('../../mydirectory')
import mymodule

但是,我得到ModuleNotFoundError: "No module named 'mymodule'"。我感到很困惑,因为我在一个目录中运行了这个目录,该目录来自我之前(工作)程序的目录。 (我尝试添加__init__.py,但它没有帮助。)有谁知道为什么这不起作用?有什么建议吗?

1 个答案:

答案 0 :(得分:2)

这是我的首选方法:

import sys
from pathlib import Path

HERE = Path(__file__).parent

sys.path.append(str(HERE / '../../mydirectory'))

使用__file__我不依赖当前工作目录作为相对路径的起点 - HERE是当前文件所在的目录。

当然,您不必使用pathlib module