【问题标题】:What is the official "preferred" way to install pip and virtualenv systemwide?在系统范围内安装 pip 和 virtualenv 的官方“首选”方式是什么?
【发布时间】:2011-07-31 22:46:10
【问题描述】:

这是人们最常推荐的吗:

$ sudo apt-get install python-setuptools
$ sudo easy_install pip
$ sudo pip install virtualenv

或者这个,我从http://www.pip-installer.org/en/latest/installing.html得到的:

$ curl -O https://github.com/pypa/virtualenv/raw/master/virtualenv.py
$ python virtualenv.py my_new_env
$ . my_new_env/bin/activate
(my_new_env)$ pip install ...

还是完全不同的东西?

【问题讨论】:

    标签: python virtualenv setuptools pip easy-install


    【解决方案1】:

    如果您可以安装最新的 Python(2.7.9 及更高版本),Pip 现在已与它捆绑在一起。 见:https://docs.python.org/2.7//installing/index.html
    如果不是:
    更新(来自发行说明):

    从 v1.5.1 开始,pip 在运行 get-pip.py 之前不需要 setuptools。此外,如果尚未安装 setuptools(或分发),get-pip.py 将为您安装 setuptools。

    我现在运行常规:

    curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | sudo python
    

    以下是官方安装说明: http://pip.readthedocs.org/en/latest/installing.html#install-pip

    2013 年 7 月 25 日编辑:
    更改了 setuptools 安装的 URL。

    2014 年 2 月 10 日编辑:
    删除了 setuptools 安装(感谢@Ciantic)

    2014 年 6 月 26 日编辑:
    再次更新网址(感谢@LarsH)

    2015 年 3 月 1 日编辑:
    Pip 现在与 Python 捆绑在一起

    【讨论】:

    • 在哪里/如何安装 setuptools-0.8?看起来您只是在使用 ez_setup.py 来获取 pip 的“轻量级版本”。我也会这样做,但担心它会在不久的将来破裂,我会再次被困在这里(就像我一直做的那样)
    • 啊,看来指令说照你说的做,这是被批准的。那没关系。
    • 有新的 (?) 方法可以做到这一点,这会自动安装 pip 和 setuptools:wget --no-check-certificate https://raw.github.com/pypa/pip/master/contrib/get-pip.py 然后python get-pip.py(可能需要 sudo)
    • 现在 get-pip.py 的 URL 似乎已更改为 https://bootstrap.pypa.io/get-pip.py。最好只是链接到官方说明。
    • P.S.感谢您的回答 - 它帮助我安装了 pip。
    【解决方案2】:

    http://www.pip-installer.org/en/latest/installing.html 确实是这个问题的规范答案。

    具体来说,系统范围的指令是:

    $ curl -O http://python-distribute.org/distribute_setup.py
    $ python distribute_setup.py
    $ curl -O https://raw.github.com/pypa/pip/master/contrib/get-pip.py
    $ python get-pip.py
    

    问题中引用的部分是virtualenv 指令,而不是系统范围的指令。 easy_install 说明已经存在了很长时间,但没有必要再这样做了。

    【讨论】:

    • 已编辑以阐明该页面上的系统范围指令与问题中引用的 virtualenv 指令之间的区别。
    • 更新:distribute 不再适用于 pip!见stackoverflow.com/a/17601159/78234
    • 请注意,链接页面上的说明不再与此处的说明相匹配。最好只访问官方页面并按照他们说的做(为什么有人首先怀疑他们?!)
    • 此答案中描述的方法已过时,似乎不再有效。
    【解决方案3】:

    这个答案来自 Twitter 上的@webology:

    $ sudo apt-get install python-setuptools
    $ sudo easy_install pip
    $ sudo pip install --upgrade pip virtualenv virtualenvwrapper
    

    我添加的笔记:

    • 在 Mac/Windows(和 Linux,如果 apt repo 已过时)上,您可以用从http://pypi.python.org/pypi/setuptools 下载 setuptools 代替第一步
    • 在 Windows 上,您必须在最后一步中省略 virtualenvwrapper 并以某种方式手动安装它。我不知道没有 Cygwin 是否有办法做到这一点,但我希望如此。

    【讨论】:

    • 如果条件是您想要在系统范围内安装 pip 和 virtualenv,我通常会这样做。问题中作为第二种选择给出的 pip 文档中的说明基于我们避免在系统范围内安装任何东西的前提。
    • 您可以将前两个命令替换为$ sudo apt-get install python-pip。安装 python-pip 也会安装 python-setuptools。
    【解决方案4】:

    在 Ubuntu 12.04 上,我很幸运只是使用了包管理器:

    sudo apt-get install python-pip virtualenvwrapper
    

    【讨论】:

    • 打包的版本已经过时了。 12.04 提供了 2011 年初发布的 python-pip 1.0-1build1 和 2012 年 1 月发布的 virtualenvwrapper 2.11.1-21。@Richard Jones 的回答将为您提供最新信息。
    【解决方案5】:

    没有首选方法 - 一切都取决于您的需求。通常,无论出于何种原因,您都需要在系统上安装不同的 Python 解释器。在这种情况下,您需要为每个解释器单独安装这些东西。除此之外:我更喜欢自己安装东西,而不是依赖有时会导致问题的预先打包的东西——但这只是一种可能的选择。

    【讨论】:

    • 我特意询问首选方法,因为我将把这些说明交给一个 20 人的班级,不想误导他们。
    【解决方案6】:

    这个问题确实没有一个“答案”,但肯定有一些有用的概念可以帮助您做出决定。

    在您的用例中需要回答的第一个问题是“我要使用系统 Python 吗?”如果你想使用随操作系统分发的 Python,那么使用 apt-get install 方法可能就可以了。但是,根据操作系统的分发方法,您仍然需要提出更多问题,例如“我要安装此软件包的多个版本吗?”如果答案是肯定的,那么使用 apt 之类的东西可能不是一个好主意。 Dpkg 几乎只会在文件系统的根目录解压一个存档,因此包维护者需要确保包在非常少的假设下安全安装。对于大多数 debian 软件包,我会假设(有人可以在这里纠正我)他们只是解压缩并提供顶级软件包。

    例如,假设包是“virtualenv”,你最终会得到/usr/lib/python2.x/site-packages/virtualenv。如果你用easy_install 安装它,你会得到类似/usr/lib/python2.x/site-packages/virtualenv.egg-link 的东西,它可能指向/usr/lib/python2.x/site-packages/virtualenv-1.2-2.x.egg,它可能是一个目录或压缩的鸡蛋。 Pip 做了类似的事情,虽然它不使用鸡蛋,而是将顶级包直接放在lib 目录中。

    我可能会偏离路径,但关键是每种方法都考虑了不同的需求。这就是为什么像 virtualenv 这样的工具很有帮助,因为它们允许您对 Python 库进行沙箱化,这样您就可以拥有所需的库和版本的任何组合。

    Setuptools 还允许将软件包安装为多版本,这意味着不会创建单一的 module_name.egg-link。要导入这些包,您需要使用 pkg_resources 和 __import__ 函数。

    回到你最初的问题,如果你对系统 python 感到满意并计划使用 virtualenv 和 pip 为不同的应用程序构建环境,那么使用 apt-get 在系统级别安装 virtualenv 和/或 pip 似乎完全合适.不过需要注意的一点是,如果您计划升级您的 Python 发行版,如果您链​​接回系统站点包,这可能会对您的 virtualenvs 产生连锁反应。

    我还应该提到,这些选项中没有一个天生就比其他选项更好。他们只是采取不同的方法。使用系统版本是安装 Python 应用程序的好方法,但使用 Python 开发可能是一种非常困难的方法。 Easy install and setuptools 在没有 virtualenv 的世界里非常方便,但是如果你需要使用同一个库的不同版本,那么它也会变得相当笨拙。 Pip 和 virtualenv 实际上更像是一个虚拟机。无需注意并排安装,您只需创建一个全新的环境。这里的缺点是 30 多个 virtualenvs 之后你可能已经用掉了相当多的磁盘空间并弄乱了你的文件系统。

    正如您所看到的,由于选项众多,很难说出使用哪种方法,但是通过对您的用例进行一些调查,您应该能够找到一种有效的方法。

    【讨论】:

      【解决方案7】:

      这样做:

      curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
      python get-pip.py
      pip install virtualenv
      

      【讨论】:

        【解决方案8】:

        由于 virtualenvs 默认包含 pip,我几乎从不全局安装 pip。我所做的最终看起来更像:

        $ sudo apt-get install python-setuptools
        $ curl -O http://python-distribute.org/distribute_setup.py
        $ sudo python distribute_setup.py
        $ sudo easy_install virtualenv
        

        然后我继续安装和设置我喜欢的 virtualenvwrapper,然后我就走了。看看 Jeremy Avnet 的 virtualenv-burrito 可能也值得一看:

        https://github.com/brainsik/virtualenv-burrito

        【讨论】:

        • 既然可以直接去分发,为什么还要麻烦python-setuptools然后分发呢?
        • @lambackc 您能否在单独的答案中发布您所描述的内容(即使看起来重复)?
        • 更不用说在任何最近的 Ubuntu(和 Debian 也是如此?不确定)“python-setuptools”包实际上是分发的,所以你最好跳过特定的分发步骤。
        • @coffee-grinder 分发是 setuptools 的一个分支,因此提供了相同的功能(以及更多)。不要费心去做“apt-get install python-setuptools”,除非 python-setuptools IS 分发(正如 Carl 指出的那样),在这种情况下跳过步骤 2 和 3。
        【解决方案9】:

        @ericholscher 在 Twitter 上说,“官方文档中的那个..”

        这是一个很好的观点,你应该按照文档所说的去做。

        引用自http://www.pip-installer.org/en/latest/installing.html官方pip安装说明:

        $ curl -O https://github.com/pypa/virtualenv/raw/master/virtualenv.py
        $ python virtualenv.py my_new_env
        $ . my_new_env/bin/activate
        (my_new_env)$ pip install ...
        

        【讨论】:

        • ✓ 如果您不想依赖分发包,这是最好的选择。
        【解决方案10】:

        从发行包开始,您可以使用:

        sudo apt-get install python-virtualenv
        

        允许您创建虚拟环境,或者

        sudo apt-get install python{,3}-pip
        

        它允许您将任意软件包安装到您的主目录。

        如果您习惯于 virtualenv,第一个命令会为您提供所需的一切(请记住,pip 是捆绑的,并将安装在您创建的任何 virtualenv 中)。

        如果您只想安装软件包,第二个命令可以满足您的需求。像这样使用 pip:

        pip install --user something
        

        然后放一些类似的东西

        PATH=~/.local/bin:$PATH
        

        在你的~/.bashrc


        如果您的发行版过时并且您根本不想使用它的软件包(可能除了 Python 本身),您可以下载 virtualenv,无论是作为 tarball 还是作为独立脚本:

        wget -O ~/bin/virtualenv https://raw.github.com/pypa/virtualenv/master/virtualenv.py
        chmod +x ~/bin/virtualenv
        

        如果您的发行版更先进,Python3.3 具有内置的类似 virtualenv 的功能:

        python3 -m venv ./venv
        

        这运行得更快,但不包括 setuptools 和 pip。

        【讨论】:

          【解决方案11】:

          要在 mac (osx) 上安装 pip,以下一个衬里非常适合我:

          sudo easy_install pip
          

          【讨论】:

            【解决方案12】:

            在 Debian 上最好的方法是

            sudo apt-get install python-pip

            【讨论】:

            【解决方案13】:

            在 Raspbian 中,甚至不需要提及 python2.7。事实上,如果 python 版本低于 2.7.9,这是安装 pip 的最佳方式。

            curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | sudo python
            

            感谢@tal-weiss

            【讨论】:

              【解决方案14】:

              【讨论】:

              • 我知道 virtualenv 带有 pip。 pip 自带 virtualenv 吗?
              • 不,在那之后你只会pip install virtualenv
              【解决方案15】:

              我使用 get-pip 和 virtualenv-burrito 来安装所有这些。不确定是否需要 python-setuptools。

              # might be optional. I install as part of my standard ubuntu setup script
              sudo apt-get -y install python-setuptools
              
              # install pip (using get-pip.py from pip contrib)
              curl -O https://raw.github.com/pypa/pip/develop/contrib/get-pip.py && sudo python get-pip.py
              
              # one-line virtualenv and virtualenvwrapper using virtualenv-burrito
              curl -s https://raw.github.com/brainsik/virtualenv-burrito/master/virtualenv-burrito.sh | bash
              

              【讨论】:

                【解决方案16】:

                前一种方法很好。我能看到的唯一问题是您最终可能会使用旧版本的 setuptools(如果 apt 存储库没有保持最新..

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2014-04-18
                  • 2020-01-05
                  • 1970-01-01
                  • 1970-01-01
                  • 2011-07-22
                  相关资源
                  最近更新 更多