Nik*_*war 4 python import packaging
我有以下目录结构
outdir
|--lib
|--- __init__.py
|--- abc.py
|--indir
|--- __init__.py
|---- import_abc.py
Run Code Online (Sandbox Code Playgroud)
如何lib导入import_abc.py?
当我尝试在 import_abc.py 中导入 lib 时
我收到以下错误
Traceback (most recent call last):
File "import_abc.py", line 1, in <module>
import lib
ImportError: No module named lib
Run Code Online (Sandbox Code Playgroud)
花点时间看看您想要实现的目标:您想要导入模块 abc.py,它是包 lib 的一部分,因此为了正确导入它,您需要指定它在哪个包中:
from lib import abc
Run Code Online (Sandbox Code Playgroud)
或者
import lib.abc as my_import
Run Code Online (Sandbox Code Playgroud)
附带说明一下,请查看Python 教程中有关模块的章节。
鉴于 @Noelkd 的评论,我忘了告诉您 PYTHONPATH,它是一个环境变量,其中包含 Python 将在其中查找模块的文件夹(如 Java CLASSPATH)。您需要将根文件夹放入 PYTHONPATH 中,以避免对 sys.path.append 进行一些摆弄。
在重击中:
export PYTHONPATH=<abs. path to outdir>
Run Code Online (Sandbox Code Playgroud)
例如,我已将 outdir 放在桌面中:
export PYTHONPATH=~/Desktop/outdir
Run Code Online (Sandbox Code Playgroud)
进口就像一个魅力。
您可以在这篇博文中找到有关导入机制和 PYTHONPATH 的一些精彩解释。
注意:如果您使用 IDE(例如 PyDev),通常它会自动为每个项目设置 PYTHONPATH。但如果您想自己完成这一切,则需要设置 PYTHONPATH 环境变量。