您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

为什么python如果名称相同,则查找模块而不是包?

为什么python如果名称相同,则查找模块而不是包?

我从问题简化了示例,以说明只有 是可能的:

什么解决方案是最好的?这取决于Python 2或3的个人偏好。只有最后一个对所有Python都很好并且通用。这确实是一个有用的问题。

import xyz.tests.t

import sys
print('sys.path = %s' % sys.path) # see that the parent of "xyz" is on sys.path
print("importing xyz.tests")
import xyz.a

# solution A: absolute_import by __future__  (or use Python 3)
#from __future__ import absolute_import
print("importing xyz.a")
# solution B: explicit relative import
#from . import b    # and remove "import xyz.b"
# solution C: relative import (not recommended)
#import b           # and remove "import xyz.b"
import xyz.b

print("imported xyz.b")

print("Imported xyz.xyz !!!")

xyz / .py :空文件

一切可能失败,例如

parent_of_xyz=...  # The parent directory of "xyz" - absolute path
cd $parent_of_xyz
python -m xyz.tests.t
PYTHONPATH=$parent_of_xyz/xyz python -m unittest tests
PYTHONPATH=$parent_of_xyz     python xyz/tests/t.py

像这样的消息

Imported xyz.xyz  !!!
...
ImportError...

无需使用任何子目录即可使其更加简化。

我昨天尝试了许多测试,但是我从不同版本不一致地编写了它。对不起,答案是无法复制的。现在已 。

python 2022/1/1 18:38:50 有273人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶