Dealing with multiple Python versions and PIP?
有没有办法让
例如,使用
并且,是的 - 我知道virtualenv,不 - 它不是解决这个特定问题的方法。
目前的建议是使用
1 2 3 4 5 6 7 8 | # The system default python: $ python -m pip install fish # A virtualenv's python: $ .env/bin/python -m pip install fish # A specific version of python: $ python-3.6 -m pip install fish |
以前的答案,留给子孙后代:
从版本0.8开始,Pip支持
1 2 3 | $ pip-2.5 install myfoopackage $ pip-2.6 install otherpackage $ pip-2.7 install mybarpackage |
编辑:pip在1.5版中将其架构更改为使用
1 2 | $ pip2.6 install otherpackage $ pip2.7 install mybarpackage |
有关详细信息,请查看https://github.com/pypa/pip/pull/1053
参考文献:
- https://github.com/pypa/pip/issues/200
- http://www.pip-installer.org/docs/pip/en/0.8.3/news.html#id4
在Windows中,您可以通过提及python版本来执行pip模块(您需要确保启动器在您的路径上)
或者,您可以像这样直接调用所需的python可执行文件:
为了能够在任何没有安装pip的python版本上工作,你需要下载pip并执行
我默认安装了python 2.6(Amazon EC2 AMI),但需要python2.7以及我的应用程序的一些外部包。假设你已经安装了python2.7和默认的python(在我的情况下为2.6)。以下是如何为非默认python2.7安装pip和包
为你的python版本安装pip:
1 2 | curl -O https://bootstrap.pypa.io/get-pip.py python27 get-pip.py |
使用特定的pip版本来安装包:
1 | pip2.7 install mysql-connector-python --allow-external mysql-connector-python |
它在Windows中以这种方式为我工作:
我将python文件python.py和pythonw.exe的名称更改为python3.py pythonw3.py
然后我在提示符中运行了这个命令:
其他答案显示了如何使用2.X和3.X Python的pip,但没有展示如何处理多个Python发行版的情况(例如原始Python和Anaconda Python)。
我总共有3个Python版本:原始Python 2.7和Python 3.5以及Anaconda Python 3.5。
以下是我如何将软件包安装到:
原始Python 3.5:
1 | /usr/bin/python3 -m pip install python-daemon |
原始Python 2.7:
1 | /usr/bin/python -m pip install python-daemon |
Anaconda Python 3.5:
1 | python3 -m pip install python-daemon |
要么
1 | pip3 install python-daemon |
更简单,因为Anaconda会覆盖用户环境中的原始Python二进制文件。
当然,应该使用
另外,请确保为该特定python安装了pip。您可能需要手动安装pip。这适用于Ubuntu 16.04:
1 | sudo apt-get install python-pip |
要么
1 | sudo apt-get install python3-pip |
我最近自己遇到了这个问题,并发现我的Linux系统上也没有Python 3的正确点。
首先,您必须确保已为python版本安装了pip:
对于Python 2:
1 | sudo apt-get install python-pip |
对于Python 3:
1 | sudo apt-get install python3-pip |
然后要为一个版本的Python或另一个版本安装软件包,只需对Python 2使用以下内容:
1 | pip install <package> |
或者对于Python 3:
1 | pip3 install <package> |
pip也是一个python包。因此,将模块安装到特定python版本的最简单方法如下
1 | python2.7 /usr/bin/pip install foo |
要么
1 | python2.7 -m pip install foo |
显然有
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | $ sudo easy_install-2.7 pip Searching for pip Best match: pip 1.1 Adding pip 1.1 to easy-install.pth file Installing pip-2.7 script to /usr/local/bin Using /usr/lib/python2.7/dist-packages Processing dependencies for pip Finished processing dependencies for pip $ sudo pip-2.7 install django Downloading/unpacking django Downloading Django-1.5.1.tar.gz (8.0Mb): 8.0Mb downloaded Running setup.py egg_info for package django warning: no previously-included files matching '__pycache__' found under directory '*' warning: no previously-included files matching '*.py[co]' found under directory '*' Installing collected packages: django Running setup.py install for django changing mode of build/scripts-2.7/django-admin.py from 644 to 755 warning: no previously-included files matching '__pycache__' found under directory '*' warning: no previously-included files matching '*.py[co]' found under directory '*' changing mode of /usr/local/bin/django-admin.py to 755 Successfully installed django Cleaning up... $ python Python 2.7.3 (default, Sep 26 2012, 21:51:14) [GCC 4.7.2] on linux2 Type"help","copyright","credits" or"license" for more information. >>> import django >>> |
从这里:https://docs.python.org/3/installing/
以下是如何安装同时安装的各种版本的软件包linux,mac,posix:
1 2 3 4 5 6 | python2 -m pip install SomePackage # default Python 2 python2.7 -m pip install SomePackage # specifically Python 2.7 python3 -m pip install SomePackage # default Python 3 python3.4 -m pip install SomePackage # specifically Python 3.4 python3.5 -m pip install SomePackage # specifically Python 3.5 python3.6 -m pip install SomePackage # specifically Python 3.6 |
在Windows上,将py Python启动程序与-m开关结合使用:
1 2 3 4 | py -2 -m pip install SomePackage # default Python 2 py -2.7 -m pip install SomePackage # specifically Python 2.7 py -3 -m pip install SomePackage # default Python 3 py -3.4 -m pip install SomePackage # specifically Python 3.4 |
在Linux,Mac OS X和其他POSIX系统上,使用版本化的Python命令与
1 2 | python2.7 -m pip install SomePackage python3.4 -m pip install SomePackage |
(也可以使用适当的版本化pip命令)
在Windows上,将
1 2 | py -2.7 -m pip install SomePackage # specifically Python 2.7 py -3.4 -m pip install SomePackage # specifically Python 3.4 |
如果你得到
1 | pip install SomePackage |
这里的大多数答案都解决了这个问题,但是我想在CentOS 7上的
事实证明,在CentOS 7中,
1 | sudo /usr/local/bin/python2.7 -m ensurepip |
这应该与您的python版本一起安装在
1 | sudo /usr/local/bin/pip2.7 install <module> |
如果要安装新模块。我永远记得
例如,如果您将其他版本(例如3.5)设置为默认值并想要为python 2.7安装pip:
对于Windows专门:
path to python.exe -m pip install PackageName有效。
您可以转到例如C: Python2.7 Scripts,然后从该路径运行cmd。之后你可以运行pip2.7安装你的包......
那将为该版本的Python安装包。
这是我对这个问题的看法。适用于Python3。主要特点是:
- 每个Python版本都是从源代码编译的
- 所有版本都在本地安装
- 不会以任何方式破坏系统的默认Python安装
- 每个Python版本都与virtualenv隔离
步骤如下:
如果您以其他方式安装了几个额外的python版本,请删除它们,例如,删除$ HOME / .local / lib / python3.x等(也是全局安装的)。不要触摸系统的默认python3版本。
在以下目录结构下下载不同python版本的源代码:
1 2 3 4 5 6 | $HOME/ python_versions/ : download Python-*.tgz packages here and"tar xvf" them. You'll get directories like this: Python-3.4.8/ Python-3.6.5/ Python-3.x.y/ ... |
在每个"Python-3.x.y /"目录中,执行以下操作(不要在任何步骤中使用"sudo"!):
1 2 3 4 5 | mkdir root ./configure --prefix=$PWD/root make -j 2 make install virtualenv --no-site-packages -p root/bin/python3.x env |
在"python_versions /"创建这样的文件:
1 2 3 4 5 | env_python3x.bash: #!/bin/bash echo"type deactivate to exit" source $HOME/python_versions/Python-3.x.y/env/bin/activate |
现在,无论何时你想选择python3.x,都可以
1 | source $HOME/python_versions/env_python3x.bash |
进入virtualenv
在virtualenv中,安装你最喜欢的python包
1 | pip install --upgrade package_name |
要退出virtualenv和python版本,只需键入"deactivate"
这可能是完全错误的事情(我是一个python noob),但我刚进去并编辑了pip文件
1 2 3 4 5 6 7 8 9 10 11 | #!/usr/bin/env python3 <-- I changed this line. # -*- coding: utf-8 -*- import re import sys from pip._internal import main if __name__ == '__main__': sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) sys.exit(main()) |
安装多个版本的Python和各自的包。
同一台Windows机器上的Python版本:2.7,3.4和3.6
安装所有3个版本的Python:
- 使用以下路径安装Python 2.7,3.4和3.6
所有3个版本的Python的PATH:
- 确保PATH变量(在系统变量中)包含以下路径 - C: Python27 ; C: Python27 Scripts; C: Python34 ; C: Python34 Scripts; C: Python36 ; C: Python36 脚本;
重命名版本的可执行文件:
- 将C: Python36和C: Python34中的python可执行文件名分别更改为python36和python34。
检查所有版本的命令提示符:
为每个版本单独安装软件包
上下文:Archlinux
行动:
安装python2-pip:
你现在有pip2.7:
测试(在我的情况下我需要'boto'):
运行以下命令:
1 2 | python2 import boto |
成功:没有错误。
退出:Ctrl + D