我想从构建脚本之外控制pip的PIP_...
行为,我想知道是否有一个$ sudo pip install --upgrade pip
Traceback (most recent call last):
File "/usr/local/bin/pip", line 9, in <module>
load_entry_point('pip==7.0.3', 'console_scripts', 'pip')()
File "build/bdist.linux-x86_64/egg/pkg_resources/__init__.py", line 558, in load_entry_point
File "build/bdist.linux-x86_64/egg/pkg_resources/__init__.py", line 2682, in load_entry_point
File "build/bdist.linux-x86_64/egg/pkg_resources/__init__.py", line 2355, in load
File "build/bdist.linux-x86_64/egg/pkg_resources/__init__.py", line 2361, in resolve
File "/usr/local/lib/python2.7/site-packages/pip-7.0.3-py2.7.egg/pip/__init__.py", line 15, in <module>
from pip.vcs import git, mercurial, subversion, bazaar # noqa
File "/usr/local/lib/python2.7/site-packages/pip-7.0.3-py2.7.egg/pip/vcs/subversion.py", line 9, in <module>
from pip.index import Link
File "/usr/local/lib/python2.7/site-packages/pip-7.0.3-py2.7.egg/pip/index.py", line 30, in <module>
from pip.wheel import Wheel, wheel_ext
File "/usr/local/lib/python2.7/site-packages/pip-7.0.3-py2.7.egg/pip/wheel.py", line 35, in <module>
from pip._vendor.distlib.scripts import ScriptMaker
File "/usr/local/lib/python2.7/site-packages/pip-7.0.3-py2.7.egg/pip/_vendor/__init__.py", line 92, in load_module
raise ImportError("No module named '%s'" % (name,))
ImportError: No module named 'pip._vendor.distlib.scripts'
变量我可以配置默认情况下由PIP使用,而不是让我将其添加到每个命令行。
文档说明了PIP_
environment variables,但未提及它们的列表。
答案 0 :(得分:0)
简答:
编辑:创建一个包含您要升级的所有软件包的需求说明符文件,然后在需要的配置文件中包含需求说明符文本文件和升级行为。现在,您可以使用简单的命令pip install
升级任意数量的软件包和这些软件包的任何特定版本。
虽然我无法想到使用环境变量解决此问题的单线解决方案,但您可以利用环境变量来升级任意数量的包,而无需使用每个安装命令的--upgrade
选项,如下所示
要控制升级行为,请更新您的点数环境变量:export PIP_UPGRADE=True
。
要指定要升级的软件包,请运行您习惯的安装命令:pip install specifiedPackage
。
没有pip
环境变量的完整列表,因为它们是由用户/用户组自定义添加的内容。您可以通过--upgrade
配置文件控制所有pip
命令的pip install
选项的行为,或仅控制特定命令(如pip
)的行为。
长答案:
编辑: 使用需求说明符文件:您可以创建简单的需求说明符文本文件来指定要安装的程序包。实际上,您甚至可以在这些文件中指定这些软件包的特定版本(如果您希望安装旧版本或希望避免使用特定版本)。需求文件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
,就可以获得与覆盖pip install --upgrade -r myRequirements.txt
之前相同的效果。 --upgrade
和-r
选项。
关于pip
环境变量的说明:我认为您只是按错误的顺序阅读了文档。只有在配置文件中添加/更改了某些内容后才能使用环境变量。只需使用上面给出的示例,您就可以运行命令export PIP_UPGRADE=True
,然后运行pip install somePackage
。我刚刚写出的两个命令与命令pip install --upgrade somePackage
具有相同的效果。当您想要将--upgrade
选项的行为从您在配置文件中设置的任何内容更改时,您只需要使用环境变量!