Python:从同一包中导入子模块或子包

马赛斯

我仍在尝试找出如何创建包的方法,这是一个演示我的问题的文件结构:

/main_package/
    __init__.py
    script1.py
    sub_package/
         __init__.py
         model.py

__init__.py中的main_package比方说,我有:

import main_package.script1
...

script1.py我里面:

from sub_package import model
...

这行不通。当我尝试导入时main_package,在以下调用集中出现错误:import main_package.script1->from sub_package import model

显然from sub_package import model内部script1.py不起作用。

我尝试了以下方法:

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'

模型肯定是顺便存在的。

马赛斯

好的,我似乎对整个包结构感到困惑。引用更新中的结构-在Models__init__.py文件中,我进行的导入import Models.model_main等。为了使其正常工作,我也需要from . import model_main谢谢您的帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章