【发布时间】:2012-07-30 17:36:43
【问题描述】:
想象一下目录结构:
/ 一种/ __init__.py b.py py py文件/a/b.py 看起来像:
所有其他文件(包括__init__)都是空的。
运行测试脚本时(使用 python 2.7):
import a.b
print a.b.should_be_absolute
PYTHONPATH=/ 来自一个空目录(因此没有任何内容从当前目录添加到 PYTHONPATH)我得到
<module 'a.c' from '/a/c.py'>
根据PEP 328 和声明import <> is always absolute 我希望:
<module 'c' from '/c.py'>
当我删除 /a/c.py 文件时,输出与预期一样。
我错过了什么?如果这是正确的行为 - 如何从b(而不是a.c)导入c 模块?
更新:
根据python dev mailing list,这似乎是文档中的一个错误。默认情况下,python27 中的导入不是绝对的。
【问题讨论】:
-
你完整的pythonpath是什么?只有 / 吗?您可能应该使用根包名
-
FWIW,这在 Python 3 中可以正常工作。
-
@jdi - 是的,根是 PYTHONPATH 中唯一的东西(编辑了原始帖子以使其更加明确)