我最近安装了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-如何使安装的库读取我自己的脚本之一作为模块?。
答案 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>