[英]What is the best practice for imports when developing a Python package?
[英]How to work with absolute imports when developing a package
我在包裝進口方面苦苦掙扎已經有一段時間了。 開發軟件包時,我到處都讀到,最好在該軟件包的子模塊中使用絕對導入。 我了解這一點,並且也更喜歡它。 但是然后我不喜歡,並且我還讀到您不應該使用sys.path.append('/path/to/package')
在開發中使用您的包...
所以我的問題是,如何使用直接絕對導入從零開始開發這樣的程序包? 目前,我使用相對導入來開發軟件包,從那時起,我能夠在打包和安裝之前測試我編寫的代碼,然后在發布並構建軟件包后更改導入。
做這種事情的正確方法是什么? 例如,在Pycharm中,您會將文件夾標記為“ source roor”,並且可以像打包文件夾在路徑中一樣工作。 我仍然讀到這不是正確的方法……我想念什么? 在測試其代碼時如何開發軟件包?
您的里程可能會有所不同,但這是我通常要做的:
在包( foo
)中,絕對的( import foo.bar
)或相對的( import .bar
)對我而言並不重要,只要它可以工作即可。 有時,我更喜歡相對的,尤其是在項目很大的時候,有一天我可能決定將許多源文件移到子目錄中。
我該如何測試? 我的$PYTHONPATH
通常有.
在其中,我的目錄層次結構是這樣的:
/path/to/foo_project
/setup.py
/foo
/__init__.py
/bar.py
/test
/test1.py
/test2.py
那么foo_project/test/test1.py
的腳本將與您通常使用import foo.bar
的包import foo.bar
。 當我測試代碼時,我將位於foo_project
目錄中並運行python test/test1.py
。 既然我有.
在我的$PYTHONPATH
,它將找到目錄foo
並將其用作包。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.