Python:从…导入包时出现问题。。。使用uuu all和uuu init导入*__
我有以下包含2个模块的Python包:Python:从…导入包时出现问题。。。使用uuu all和uuu init导入*__,python,import,package,Python,Import,Package,我有以下包含2个模块的Python包: -pack1 |-__init__ |-mod1.py |-mod2.py -import_test.py 使用代码: # in mod1.py a = 1 及 以及\uuuu init\uuuu代码: # in __init__.py __all__ = ['mod1', 'mod2'] 接下来,我将尝试导入包: # in import_test.py from pack1 import * 但我有一个错误: ModuleNotFoundE
-pack1
|-__init__
|-mod1.py
|-mod2.py
-import_test.py
使用代码:
# in mod1.py
a = 1
及
以及\uuuu init\uuuu
代码:
# in __init__.py
__all__ = ['mod1', 'mod2']
接下来,我将尝试导入包:
# in import_test.py
from pack1 import *
但我有一个错误:
ModuleNotFoundError:没有名为“mod1”的模块
如果我在mod2.py中删除依赖项“from mod1 import a”,那么导入将正确进行。但是,这种依赖关系使导入不正确,只有“ModuleNotFoundError”例外
???这里的问题是,从
mod2
的角度来看,它将搜索模块的第一级位于导入模块的路径中(这里我假设pack1不在PYTHONPATH中,并且您从包含pack1
的同一目录导入它)
这意味着如果pack1
位于目录/dir/to/pack1
中,并且您执行以下操作:
从mod1导入a
Python将在与pack1
相同的目录中查找mod1
,即/dir/to/pack1
要解决您的问题,只需执行以下任一操作即可:
从pack1.mod1导入
或者在Python 3.5中+
from.mod1导入一个
作为补充说明,除非您必须这样做,否则我不建议将您的包设计为作为包导入*中的,即使存在\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
此解决方案“从pack1.mod1导入a”有效。我想我已经明白出了什么问题。谢谢
# in import_test.py
from pack1 import *