2016-05-04 36 views
1

我想控制構建腳本外部的pip的--upgrade行爲,我想知道是否有一個PIP_...變量,我可以配置該變量默認使用PIP,而不需要將它添加到每個命令行。是否有可用於額外參數的pip環境變量?

該文檔說明了關於PIP_ environment variables的一些內容,但未能提及它們的列表。

+0

您可以在每個用戶的基礎上創建'PIP _...'環境變量!所以,沒有列表是因爲您決定了'PIP _...'env變量。如果您使用的是Linux,那麼您只需在配置文件中添加一個環境變量:$ HOME/.config/pip/pip.conf。所以,對於你特別的選擇,'--upgrade',你所要做的就是在你感興趣的命令下面添加一行(即'[install]'),或者如果你希望它隨時適用在'[global]'下調用升級。該行看起來有點像:'upgrade =指定你的選項選擇這裏。 –

+0

你在這個話題上仍然有困難嗎?如果是這樣,請進一步澄清你的問題是什麼。如果你已經找到解決問題的辦法,我建議你編譯一個你自己的答案,並接受它,以便這個問題將被關閉。 –

回答

0

簡答

編輯:創建一個包含所有的軟件包你想升級的要求符文件,則既包括要求符的文本文件和升級行爲,你的願望到您的配置文件。現在您可以使用簡單命令pip install來升級任意數量的軟件包和這些軟件包的任何特定版本。

儘管我無法想象使用環境變量解決此問題的單線解決方案,但您可以利用環境變量來升級儘可能多的包,而無需使用每個安裝命令的--upgrade選項,如下所示。

  1. 要控制升級行爲,請更新您的pip環境變量:export PIP_UPGRADE=True

  2. 要指定要升級的軟件包,請運行您習慣的安裝命令:pip install specifiedPackage

pip環境變量沒有全面的名單,因爲他們是由用戶/用戶組定製補上一。您可以通過您的pip配置文件來控制所有pip命令的--upgrade選項的行爲,或者只控制特定的行爲(如pip install)。

龍回答

編輯:使用要求說明符文件:您可以創建簡單的要求符的文本文件來指定要安裝軟件包。實際上,您甚至可以在這些文件中指定這些軟件包的特定版本(如果您希望安裝舊版本或希望避免特定版本)。一個需求文件,myRequirements.txt,應該是這樣的(主要來自here複製):

# 
####### myRequirements.txt ####### 
# 
###### Requirements without Version Specifiers ###### 
nose 
nose-cov 
beautifulsoup4 
# 
###### Requirements with Version Specifiers ###### 
# See https://www.python.org/dev/peps/pep-0440/#version-specifiers 
docopt == 0.6.1    # Version Matching. Must be version 0.6.1 
keyring >= 4.1.1   # Minimum version 4.1.1 
coverage != 3.5    # Version Exclusion. Anything except version 3.5 
Mopidy-Dirble ~= 1.1  # Compatible release. Same as >= 1.1, == 1.* 
# 
###### Refer to other requirements files ###### 
-r myOtherRequirements.txt 
# 
# 
###### A particular file ###### 
./downloads/numpy-1.9.2-cp34-none-win32.whl 
http://wxpython.org/Phoenix/snapshot-builds/wxPython_Phoenix-3.0.3.dev1820+49a8884-cp34-none-win_amd64.whl 
# 
###### Additional Requirements without Version Specifiers ###### 
# Same as 1st section, just here to show that you can put things in any order. 
anotherPackage 
yetAnotherPackage 
# 

找到你的配置文件:所有pip命令行選項和環境變量在配置文件中設置。根據您安裝的操作系統pip,配置文件的路徑將會更改...在相同的文檔中找到您的文件here

編輯您的配置文件:組織非常簡單。如果你想讓命令行選項發生變化,你將會影響所有的pip命令,然後你把它放在[global]語句下。否則,如果你希望它隻影響一個命令(即,pip install),那麼你把它放在[command-here]聲明(即[install])。因此,簡言之它看起來是這樣的:使用

[install] 
upgrade = True 
requirement = /path/to/myRequirements.txt 

命令行:現在你已經覆蓋了pip install命令的實用性和您指定一個包含所有包您的要求符文件你想要升級(如果需要,還可以升級你想要升級的版本),你可以簡單地打電話給pip install,在覆蓋--upgrade的行爲之前,你會得到和pip install --upgrade -r myRequirements.txt相同的效果和-r選項。

關於pip環境變量的注意事項:我想你只是按錯誤順序閱讀文檔。在添加/更改配置文件中的某些內容後,您只能使用環境變量。使用上面給出的示例,您可以運行命令export PIP_UPGRADE=True,然後運行pip install somePackage。我剛剛寫出的兩個命令與命令pip install --upgrade somePackage具有相同的效果。當你想要改變--upgrade選項的行爲時,只需要使用環境變量就可以將其設置爲配置文件!

+0

感謝您的回答,它很好地解釋了pip env變量,配置選項和命令行參數是如何工作的。儘管如此,只有一件事我不明白:--upgrade選項不帶參數,您應該使用PIP_UPGRADE = True來啓用升級模式,但參數/包不能使用env變量或內部配置來指定文件。這是我的印象。 – sorin

+0

我很抱歉,我的回答是錯誤的。我將測試一些可能性,看看是否有方法從配置文件指定要安裝的軟件包。現在,我已經更新了我的答案,以正確反映如何利用「PIP_UPGRADE」環境變量升級多個軟件包,而無需使用「--upgrade」選項。 –

+0

它不是環境變量,但'pip'確實有[要求說明文件](https://pip.pypa.io/en/latest/reference/pip_install/#example-requirements-file),您可以創建它來指定包安裝(甚至指定要安裝的那些軟件包的版本,如果您更喜歡安裝較舊的版本)。一旦創建了需求文件'myRequirements.txt',就可以通過'pip install -r myRequirements.txt'安裝該文件中引用的所有軟件包。現在,你可以在'[install]'頭下添加一行,例如'require = myRequirements.txt'。 –

相關問題