想象的目錄結構:默認情況下,python27中的導入不應該是絕對的嗎?
/ a/ __init__.py b.py c.py c.py
文件/a/b.py
樣子:
import c should_be_absolute = c
所有其他文件(包括__init__
)是空的。
當運行一個測試腳本(使用Python 2.7):按照這裏從一個空目錄(所以沒有什麼是從當前目錄添加到PYTHONPATH
)我得到
<module 'a.c' from '/a/c.py'>
import a.b
print a.b.should_be_absolute
與PYTHONPATH=/
到PEP 328和聲明import <> is always absolute
我期望:
<module 'c' from '/c.py'>
當我刪除/a/c.py
文件時,輸出與預期一致。
我錯過了什麼?如果這是正確的行爲 - 如何從b
(而不是a.c
)導入c
模塊?
更新:
根據python dev mailing list它似乎是在文檔中的錯誤。默認情況下,python27中的進口是而不是。
什麼是你完整的pythonpath?它只是/?你可能應該使用一個根包名稱 – jdi 2012-07-30 17:43:22
FWIW,這可以像Python 3期望的那樣工作。 – geoffspear 2012-07-30 17:50:22
@jdi - 是根是PYTHONPATH中唯一的東西(編輯原始文章使其更加明確) – karolx 2012-07-31 08:44:20