Python 2.7无法在其搜索路径中找到模块

问题描述 投票:1回答:1

我想测试Python 2.X的相对导入模型

目录树

exercises/
    dir1/
        dir2/
            mod.py
            dir3/
                mod2.py
                mod3.py

mod.py

import sys
print 'in dir1/dir2/mod.py'
path = [name for name in sys.path if 'Frameworks' not in name]. 
print 'Module search path of mod is:\n' + str(path)

import dir3.mod2

mod2.py

print 'in dir1/dir2/dir3/mod2.py' 
import mod3

mod3.py

print 'in dir1/dir2/dir3/mod3.py by relative import'

'mod'将从'dir3'导入'mod2',然后再导入'mod3'。在Python 3.X中,这将失败,因为未提供“ mod3”的路径。在Python 2.X中,解释器先搜索包含“ mod2”的同一目录,然后再搜索从“ mod”的顶层目录开始的其余路径。

这是我收到的错误消息:

MacBook-Pro-9 exercises % python dir1/dir2/mod.py
in dir1/dir2/mod.py
Module search path of mod is:
['Users/arthur/Desktop/learning_python/exercises/dir1/dir2', '/Library/Python/2.7/site-packages']
Traceback (most recent call last):
  File "Desktop/learning_python/exercises/dir1/dir2/mod.py", line 8, in <module>
    import dir3.mod2
ImportError: No module named dir3.mod2

我知道'dir2'包含'dir3 / mod2',但是由于某些原因,Python无法找到它。我非常确定import语句的语法正确。

我修改了打印语句,并将'mod2.py'代码更改为读取from . import mod3。我没有编辑任何东西,它在Python 3.8中运行得很好,找到'dir3.mod2'没有问题。

我想测试Python 2.X目录树的相对导入模型:Exercises / dir1 / dir2 / mod.py dir3 / mod2.py mod3.py mod ....

python-2.7 module python-import python-2.x importerror
1个回答
2
投票

您必须在dir3中添加一个名为init

© www.soinside.com 2019 - 2024. All rights reserved.