我有一个 pytestlib 包和模块如下:test.py 只是创建模块 2,模块 2 导入模块 1。如果编译并直接在其自己的文件夹中运行,test.py 代码将按预期工作。
pyteslib\
- __init__.py
- module1.py
- module2.py
- test.py
模块1.py
class Module1Class():
def __init__(self):
self.msg ="This message is from Module1Class"
模块2.py
from module1 import Module1Class
class Module2Class():
def __init__(self):
module1_obj = Module1Class()
print(module1_obj.msg)
测试.py
from module2 import Module2Class
module2_obj = Module2Class()
然而; 如果我制作这个,一个包,并从另一个项目导入,我会收到 ImportModule 错误。
externaltest.py(在另一个项目中)
导入系统
from pytestlib.module1 import Module1Class # No error importing module1
# from pytestlib.module2 import Module2Class # I have error if import module2
module1_obj = Module1Class()
# module2_obj = Module2Class() # I have error
我有这个错误:
Traceback (most recent call last):
File "X:/SDK/python/testimp/imp.py", line 3, in <module>
from pytestlib.module2 import Module2Class
File "C:\Program Files (x86)\Python35-32\lib\site-packages\pytestlib\module2.py", line 1, in <module>
from module1 import Module1Class
ImportError: No module named 'module1'
简而言之,制作包后,通过包的module2.py是找不到module1的。但是如你所见,module1可以通过externaltest.py直接导入。包不能导入自己的模块。