回答
另一種選擇,如果你正在寫的一個包的一部分,是使用相對進口像這樣:
from .. import foo
其中foo
是您要導入的模塊的名稱。
同樣,如果你有在當前目錄中的另一個模塊,您可以使用:
from . import bar
可悲的是(或許不那麼傷心),但是,這並不比任何進一步的擴展這個。你不能去祖父母或更高。
編輯:
至於如此慷慨指出的JAB,我最後的評論還沒有真正:
從... SYS導入路徑
注意的是,雖然去年案件是合法的,它肯定是不受歡迎的(「瘋狂」是Guido使用的詞)。
我必須內化Guido對它的描述太多。 ; ^)
編輯:
好吧,我只是證實了這一在2.7 - 這顯然是去深如你喜歡,是依賴於.
from .... import greatgrandparent
作品juuuust數精細。我想我需要a bucket
「你不能去祖父母,或更高。」 PEP 328似乎暗示你可以。 HTTP://www.python。org/dev/peps/pep-0328 /#guido-s-decision – JAB
我剛剛證實你可以(在Python 3中,至少;它不應該與Python 2有所不同,因爲這個相對的import語法已經實現在第一個版本中)。 – JAB
「我一定已經內化了Guido對它的描述太多了; ^)」Guido的描述不是指使用相對導入語法從標準Python模塊導入項目嗎? (我的意思是,當相對導入從內置的Python模塊中獲取某些內容時,它會變得非常愚蠢,因爲它更合理,而且更合乎邏輯,只需對這些模塊進行絕對導入)。 – JAB
根據項目的組織方式,您可能可以正常導入它。比方說你的項目結構是這樣的:
from mymodule import helper
:
/tmp/test_prj/launcher.py
/tmp/test_prj/mymodule/__init__.py
/tmp/test_prj/mymodule/helper.py
/tmp/test_prj/mymodule/mysubmodule/__init__.py
如果(在這種情況下launcher.py
)使用一個發射器和總是調用與./launcher.py
您的項目,您使用以下行可能進口helper.py
內mysubmodule
這是可行的,因爲你當前的工作目錄是/tmp/test_prj
。你可以用print sys.path
來檢查它,它應該是第一個。
讓我知道如果我不夠清楚:D
- 1. 從當前目錄的父目錄的另一個子目錄導入另一個模塊(python)
- 2. 從用戶指定的目錄中導入一個python模塊?
- 3. 從另一個目錄導入Python模塊
- 4. 如何導入一個python文件的父目錄
- 5. 從Python子目錄導入
- 6. 如何從父目錄導入模塊? (單元測試目的)
- 7. 從父目錄導入腳本
- 8. 從父目錄導入文件
- 9. 從父目錄導入文件?
- 10. 從另一個目錄導入Python包到Django項目
- 11. 一次從一個目錄導入所有模塊[NODE]
- 12. flash導入類從另一個目錄
- 13. 從目錄動態導入一個包
- 14. 從父目錄導入模塊以數字開頭
- 15. 如何導入目錄爲python模塊
- 16. 的Python 2.7:導入坐落在一個子目錄從不同的子目錄下一個模塊
- 17. 導入從同一目錄導入模塊
- 18. 無法從django應用程序父目錄中的子目錄導入模塊
- 19. 當父目錄已經擁有該庫的舊版本時,Python從另一個目錄導入更新的庫
- 20. 導入類從另一個目錄 - Python的
- 21. python父目錄
- 22. 從Python中的子目錄導入
- 23. 從較高目錄導入在Python
- 24. 從兄弟目錄導入Python類
- 25. 從子目錄導入類python
- 26. 從父模塊導入宏
- 27. 如何從父目錄中導入一類在ActionScript 3
- 28. 從Python模塊導入父目錄內到jupyter筆記本電腦內的文件子目錄
- 29. 從隱藏目錄導入模塊(包)
- 30. 從不同目錄導入模塊
這就是文件系統的工作原理。 –