我得到一个ImportError
当我从一个子模块中我想一个应该做的方式进口。
我有以下软件包:
pkg/
__init__.py
cow.py
pizza.py
pkg.py
components/
components.py
otherstuff.py
__init__.py
cow.py:
print "Hello"
from components import foodle
components.py:
foodle=5
并且__init__
的为空。
我在将事情放置在正确的位置或正确地组织它们时遇到了麻烦。当从pkg目录尝试
from pkg import foodle
我收到“ ImportError:无法导入名称foodle”
安排文件和从子模块导入的正确方法是什么?我已经阅读了如何从git子模块导入python文件;我尝试将sys.path
incomponents/__init__.py
和in弄乱,cow.py
无济于事。这个包是在git上共享的,因此它需要可移植。components
实际上是一个git子模块。
把from components import *
在__init__py
在组件/似乎工作,但我通常认为文件保持为空。
我所缺少的元素是(这些是我的解释,可能仍然不正确):
如果是包(带有__init__.py
),请从pkg
文件夹外部而不是内部使用。也就是说,很难同时使用两种方法(从外部调用和从内部使用模块),所以不要这样。这是解决我的问题的主要见解。
用于获取子模块和子包的点表示法既适用于文件,也适用于其中的文件夹pkg
。因此,从其他文件夹中,但pkg
在我的路径中,我可以调用以下任何一个:
import pkg
from pkg.cow import foodle
from pkg.components import foodle
from pkg.components.components import foodle
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句