从打包模块中导入 python 模块

Import a python module from within a packed module

所以我 builded a python package localy:

cgi@cgires:~$ pip list | grep mads
madscgi                     0.1.0

不错!之后,我可以在 Jupyter Notebook、iPython Shell、Python Shell 甚至模块代码之外的 python 脚本 中使用它。因此它在模块代码之外按预期 100% 工作:

很好,但接下来我想将代码从一个构建的模块(inside 包)导入另一个 python 文件(inside包)。让我们将其命名为 import_test.py 并尝试一下:

因此,如果它在构建包的目录中执行,它将失败。看起来 python interpreter 正在使用父目录(与模块具有 相同的名称)并且这是失败的。

是否可以强制使用已安装的 pip 包?

您要导入的文件应该在同一个文件夹中,或者用它的绝对路径引用。

如果那不适合你,你可以打电话sys.path

import sys

sys.path

您可以将文件保存在任何目录中 sys.path returns.

聪明的做法是,如果您将文件放在里面。

......../site-packages/

正如@MisterMiyagi 指出的那样,问题是,有一个与模块同名的上层文件夹。

此处:mads_consimport_test.py 的上层文件夹。因此,将导入上层文件夹而不是通过 pip 安装的模块。而已。