簡體   English   中英

添加PYTHONPATH路徑和安裝自己的模塊之間的區別

[英]Difference between adding path to PYTHONPATH and installing your own module

我正在研究一個python項目,它包含了我反復使用的一些例程。 我不是一直重寫代碼,而是想更新我的包並導入它; 然而,它遠沒有完成,而且在不斷變化。 我在一個repo上托管軟件包,以便各種機器(UNIX + Windows)上的同事可以將它拉入本地存儲庫並使用它。

聽起來我有兩個選擇,要么我可以在每次更改后保持安裝包,或者我可以將文件夾目錄添加到我的系統路徑。 如果我更換包裹,是否需要重新安裝? 我正在使用這篇博文作為靈感 ,但作者並沒有強調不斷變化的包結構的問題,所以我不知道如何處理這個問題。

此外,如果我想將項目拆分為多個文件並將其作為一個包捆綁,那么PTYHONPATH需要在目錄結構的哪個級別? 到主項目目錄,或.sample /目錄?

README.rst
LICENSE
setup.py
requirements.txt
sample/__init__.py
sample/core.py
sample/helpers.py
docs/conf.py
docs/index.rst
tests/test_basic.py
tests/test_advanced.py

在這個例子中,我希望能夠只導入包本身並在其中調用模塊,如下所示:

import sample

arg = sample.helper.foo()
out = sample.core.bar(arg)

return out

其中core包含一個名為foo的函數

PYTHONPATH是一種有效的方法,但在我(個人)看來,如果你有一個完全不同的地方保存你的python變量,它會更有用。 喜歡/opt/pythonpkgs左右。

對於我希望它安裝的項目,我還要繼續開發,我在setup.py中使用develop而不是install

安裝包時,不要這樣做:

python setup.py install

相反,做:

python setup.py develop

這樣做是因為它在python庫(安裝包中)創建了一個synlink / shortcut(我相信它在python中稱為egglink),指向模塊的目錄。 因此,當您更改python文件時,它是一個快捷方式/符號鏈接/ egglink,它會在下次導入該文件時立即反映出來。

注意:使用此方法,如果刪除運行此命令的存儲庫/目錄,則包將不再存在(作為其唯一的快捷方式)

pip的等價物是-e(可編輯):

pip install -e .

代替:

pip install .

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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