Python Can';导入我自己的软件包时无法访问模块
我得到了一个目录结构,这是一个简化的示例:Python Can';导入我自己的软件包时无法访问模块,python,Python,我得到了一个目录结构,这是一个简化的示例: project_root/ __init__.py test.py mypack/ __init__.py mymodule.py test.py包含以下内容: from . import mypack mypack.mymodule.some_function() from . import * __all__ = ['mypack'] mypack的\uuuu init\uuuu.py
project_root/
__init__.py
test.py
mypack/
__init__.py
mymodule.py
test.py
包含以下内容:
from . import mypack
mypack.mymodule.some_function()
from . import *
__all__ = ['mypack']
mypack的\uuuu init\uuuu.py
包含以下内容:
from . import mypack
mypack.mymodule.some_function()
from . import *
__all__ = ['mypack']
执行此操作时,Python告诉我“mypack”没有“mymodule”。我只能从mypack导入mymodule
这在Python2.7和Python3.5中都会发生
我怎样才能让它工作?似乎只有在安装软件包时才能执行此操作,而不是使用项目目录。对于要使用的选项,您必须实际导入mypack中的函数。\uuuu init\uuuu.py
文件:
#In mypack/__init__.py
import mymodule
虽然它可以工作,但这并不是最好的方法,我建议(我仍然相信它可以更好):
通过这种方式,您可以知道文件的来源,并且不必修改uuu init_uuuuuuuuuuy.py文件即可工作如果您希望从软件包导入中访问模块,则需要将其包含在\uuuuuu all\uuuuuuuuu
中:
# from . import * This is prolly not needed when using __all__
__all__ = ['mymodule']
看来你误解了\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。您可能想查看包的\uuu init\uuuuuuuy.py
文件中有什么?我不明白为什么import mypack
不会抛出ImportError。这应该是来自的。导入mypack
,是否应该?您确定要导入正确的mypack
模块吗?@Rawing My bad,它是来自。导入mypack
。我编辑了这篇文章。谢谢。@MosesKoledoye我在帖子中添加了\uuu init\uuuu.py
内容。