从打包模块中导入 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_cons
是 import_test.py
的上层文件夹。因此,将导入上层文件夹而不是通过 pip 安装的模块。而已。
所以我 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_cons
是 import_test.py
的上层文件夹。因此,将导入上层文件夹而不是通过 pip 安装的模块。而已。