我仍在尝试着如何创建软件包,这里有一个文件结构演示我的问题:
/main_package/
__init__.py
script1.py
sub_package/
__init__.py
model.py
在
main_package
的 __init__.py
中,假设我有以下内容:import main_package.script1
...
在 script1.py
中,我有以下代码:
from sub_package import model
...
这不起作用。当我尝试导入main_package
时,我在以下调用集中收到错误:import main_package.script1
-> from sub_package import model
显然,在script1.py
中的from sub_package import model
不起作用。
我尝试了以下方法:
from main_package.sub_package import model
from . import sub_package.model
from .sub_package import model
但是它们都没有起作用。如果我犯了愚蠢的错误,请原谅我,但是如何解决我的问题?
更新:好的,有些人确切地问了这是如何发生的,所以我将发布实际的错误消息和我的实际结构和过程。对不起,名称现在已从上面更改。
这是导致错误的包的真实结构:
script.py
/MCMC2/
__init__.py
main_script.py
ExoData.py
Models/
__init__.py
model_main.py
我在终端中运行 script.py
(即 ipython script.py [args]
) ,并且得到以下的错误消息(为了更加清晰,我抹去了问题后面的所有内容,并用 ...
代替)。
ImportError Traceback (most recent call last)
/home/usr/script.py in <module>()
1 import pymc
----> 2 from MCMC2 import ExoData
...
/home/usr/MCMC2/__init__.py in <module>()
...
----> 4 import MCMC2.main_script
...
/home/usr/MCMC2/main_script.py in <module>()
1 try: from Models import model_main
----> 2 except: from .Models import model_main
...
/home/usr/MCMC2/Models/__init__.py in <module>()
----> 1 import Models.model_main
...
ImportError: No module named 'Models'
顺便说一下,模型确实存在。
from .sub_package import model
给出了什么错误? - vaultahscript1.py
是如何被执行的。它是从其他程序中导入的还是直接作为脚本运行的? - tdelaneymain_package/__init__.py
中使用from . import script1
,以及在main_package/script1.py
中使用from .sub_package import model
,我成功地运行了代码。请问您使用的是哪个版本的 Python?在运行测试时,您当前所在的目录是什么?我当时在main_package
的上级目录中运行的测试,因此包能够被正确地找到。 - tdelaneyModels.__init__
中导入了Models.model_main
,这是行不通的。 - Stop harming Monica