是否有可用于额外参数的pip环境变量?

时间:2016-05-04 14:48:10

标签: python pip

我想从构建脚本之外控制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,但未提及它们的列表。

1 个答案:

答案 0 :(得分:0)

简答

编辑:创建一个包含您要升级的所有软件包的需求说明符文件,然后在需要的配置文件中包含需求说明符文本文件和升级行为。现在,您可以使用简单的命令pip install升级任意数量的软件包和这些软件包的任何特定版本。

虽然我无法想到使用环境变量解决此问题的单线解决方案,但您可以利用环境变量来升级任意数量的包,而无需使用每个安装命令的--upgrade选项,如下所示

  1. 要控制升级行为,请更新您的点数环境变量:export PIP_UPGRADE=True

  2. 要指定要升级的软件包,请运行您习惯的安装命令:pip install specifiedPackage

  3. 没有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选项的行为从您在配置文件中设置的任何内容更改时,您只需要使用环境变量!