簡體   English   中英

開發軟件包時如何使用絕對導入

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM