【发布时间】:2015-07-30 14:34:13
【问题描述】:
我以前有以下结构(作为更大项目的一部分):
lib/
__init__.py
somemodule.py
其中__init__.py 为空,somemodule.py 包含一些方法def hello()。现在,在我的代码存储库中,该方法的大量导入,特别是 from lib.somemodule import hello。
由于各种原因,我现在希望将 somemodule.py 移到子包中。意思是,我希望结构是:
lib/
sublib/
__init__.py
somemodule.py
__init__.py
并认为如果现在 lib/__init__.py 将包含:
from sublib import somemodule,运行 from lib.somemodule import hello 仍然可以工作(本质上,现在使结构的更改“透明”)。
但是,如果某些外部代码运行 from lib.somemodule import hello,则会引发错误 ImportError: No module named somemodule,而运行 from lib import somemodule 则有效。
我希望能解释一下我做错了什么,以及任何关于如何让from lib.somemodule import hello 在文件夹结构发生变化的情况下运行的建议。
【问题讨论】:
-
您确定
from lib import somemodule有效吗?不是from lib.sublib import somemodule吗? -
是的。将
from sublib import somemodule添加到lib/__init__.py后,from lib import somemodule工作。 -
嘿,我可以把它作为答案发布吗? :)
-
@Pynchia 这并不能解决我的问题。我的问题是
from lib.somemodule import hello不起作用。 -
咳咳……你的意思是
from lib.sublib.somemodule import hello,对吧?
标签: python python-2.7 import packages