簡體   English   中英

從任意VCS存儲庫安裝python模塊的最佳實踐

[英]Best practice for installing python modules from an arbitrary VCS repository

我對python生態系統很新,並對模塊編輯有疑問。

我使用了一堆在PyPi上發布的第三方模塊。 來自C和Java背景,我喜歡easy_install <whatever>的簡易性。 這是一個新的,美妙的世界,但是當我想編輯新安裝的模塊時,模型會出現故障,原因有兩個:

  1. egg文件可以存儲在文件系統上瘋狂的文件夾或存檔中。
  2. 使用egg似乎排除了使用原始項目的版本控制系統,就像使用debian軟件包阻止從原始VCS存儲庫進行開發一樣。

從任意VCS存儲庫安裝模塊的最佳實踐是什么? 我希望能夠繼續在其他腳本中import foomodule 如果我修改模塊的源代碼,我是否需要執行任何其他命令?

Pip允許您安裝文件,提供Subversion,git,Mercurial或bzr存儲庫的URL。

pip install -e svn+http://path_to_some_svn/repo#egg=package_name

示例:pip install -e hg + https://rwilcox@bitbucket.org/ianb/cmdutils#egg=cmdutils

如果我想下載最新版本的cmdutils (隨機包我決定拉)。

我將它安裝到virtualenv(使用-E參數),然后將cmdutls安裝到我的virtualenv文件夾頂層的src文件夾中。

pip install -E thisIsATest -e hg+https://rwilcox@bitbucket.org/ianb/cmdutils#egg=cmdutils

$  ls thisIsATest/src
cmdutils

您是否想要進行開發,但是系統會將開發版本作為一個雞蛋處理(例如獲取入口點)? 如果是,那么您應該檢查源並使用開發模式

python setup.py develop

如果項目恰好不是基於setuptools的項目,這是上面所要求的,那么這個命令可以快速解決:

python -c "import setuptools; execfile('setup.py')" develop

幾乎所有關於setuptools的知識(easy_install的基礎)都可以在setuptools文檔中找到 還有easy_install的文檔

開發模式以與easy_install相同的方式將項目添加到導入路徑。 您下次導入模塊時,您的應用程序將可以進行更改。

正如其他人提到的,你也可以直接使用版本控制URL,如果你只想獲得最新的版本,因為它現在沒有編輯的能力,但這只會拍攝快照,並且確實會創建一個正常的雞蛋作為過程的一部分。 我確信它確實是Subversion,我認為它做了其他人但是我找不到那些文檔。

您可以使用PYTHONPATH環境變量或將代碼符號鏈接到站點包中的某個位置。

easy_install安裝的軟件包往往來自開發人員版本控制的快照,通常是在開發人員發布正式版本時制作的。 因此,您必須在通過easy_install進行方便的自動下載和通過版本控制進行最新的代碼更新之間進行選擇。 如果選擇后者,則可以通過運行python setup.py install直接從版本控制檢出中構建和安裝python包索引中看到的大多數包。

如果您不喜歡默認安裝目錄,則可以安裝到自定義位置,然后導出PYTHONPATH環境變量,其值為已安裝軟件包的父文件夾的路徑。

暫無
暫無

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

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