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

2024-09-25 18:17:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我仍在尝试如何创建包,下面是一个文件结构,它说明了我的问题:

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

main_package__init__.py内,假设我有:

^{pr2}$

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'

顺便说一句,模型确实存在。在


Tags: frompyimportpackagehomemodelinitmain
1条回答
网友
1楼 · 发布于 2024-09-25 18:17:54

好吧,似乎我对整个包结构感到困惑。参考update-in-the Models__init__.py文件中的结构,我正在导入import Models.model_main等。。。为了让它工作,我还需要from . import model_main。顺便谢谢你的帮助。在

相关问题 更多 >