Python:如何在其他模块中导入模块

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)

Ket*_*uem 5

花点时间看看您想要实现的目标:您想要导入模块 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 环境变量。