将模块添加到现有库中

时间:2019-12-18 22:57:03

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

我最近安装了library,它创建了一个目录和包含多个python3脚本的子目录。

让我们专注于目录

/Users/username/TeNPy/tenpy/models

其中包含一些预制模块,例如一个名为toric_code.py的模块,其中包含类“ ToricCode”。

如果我运行仅 包含的

脚本(例如,将其称为test.py,位于我的桌面上)
from tenpy.models.toric_code import ToricCode

这很好用,我没有错误。

现在,我创建了一个名为test_module.py的新脚本,并复制粘贴了toric_code.py脚本。两者之间的内容完全相同。现在,我将test_module.py与toric_code.py放在同一目录中。

如果我运行

from tenpy.models.test_module import ToricCode

我收到错误

ModuleNotFoundError: No module named 'tenpy.models.test_module'

TL; DR-如何使安装的库读取我自己的脚本之一作为模块?。

1 个答案:

答案 0 :(得分:0)

这取决于您从何处运行此代码。提供目录结构会有所帮助。

问题似乎是您要从中导出类的文件夹不在PYTHONPATH中。如果您想查看PYTHONPATH中的内容,可以使用:

import sys

print(sys.path)

您可以在代码的顶部添加该代码,以根据模块进行调试,并查看PYTHONPATH的外观。

您需要在要从中导入代码的文件夹中添加一个名为__init__.py的文件(通常为空,但并非总是如此)。

以下是了解导入模块如何工作的好指南:

Definite Guide To Python Imports

或者,您也可以在代码顶部添加以下代码:

import sys
import os

sys.path.append(os.path.join(os.pardir, os.path.abspath(os.path.dirname(__file__))))
sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)), os.pardir, os.pardir))

如果要添加上面的代码,则不必执行以下操作:

from <folder>.file import <class/method>

但是您可以使用:

from file import <class/method>