Xử lý nhiều phiên bản Python và PIP?


499

Có cách nào để pipchơi tốt với nhiều phiên bản Python không? Ví dụ: tôi muốn sử dụng pipđể cài đặt rõ ràng mọi thứ cho cài đặt trang 2.5 của tôi hoặc cài đặt trang 2.6 của tôi.

Ví dụ, với easy_install, tôi sử dụng easy_install-2.{5,6}.

Và, vâng - tôi biết về virtualenv, và không - đó không phải là giải pháp cho vấn đề đặc biệt này.


1
@YiboYang nó có hoạt động với những thứ như pip34pip35không?
JinSnow

2
@JinSnow Nó, với điều kiện pip3.xthực sự quản lý phiên bản python mà bạn muốn cài đặt các gói (có thể chạy pip3.x -Vđể xem). Hoặc sử dụng giải pháp của @ Hugo để kiểm soát tốt hơn nhiều phiên bản python.
Yibo Yang

Bản sao có thể có của stackoverflow.com/questions/10919569/
Mạnh

Câu trả lời:


625

Các khuyến cáo hiện nay là sử dụng python -m pip, nơi pythonlà phiên bản của Python bạn muốn sử dụng. Đây là khuyến nghị vì nó hoạt động trên tất cả các phiên bản Python và trong tất cả các dạng virtualenv. Ví dụ:

# 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

Câu trả lời trước, để lại cho hậu thế:

Kể từ phiên bản 0.8, Pip hỗ trợ pip-{version}. Bạn có thể sử dụng nó giống như easy_install-{version}:

$ pip-2.5 install myfoopackage
$ pip-2.6 install otherpackage
$ pip-2.7 install mybarpackage

EDIT : pip đã thay đổi lược đồ của nó để sử dụng pipVERSIONthay vì pip-VERSIONtrong phiên bản 1.5. Bạn nên sử dụng như sau nếu bạn có pip >= 1.5:

$ pip2.6 install otherpackage
$ pip2.7 install mybarpackage

Kiểm tra https://github.com/pypa/pip/pull/1053 để biết thêm chi tiết


Người giới thiệu:


12
Không hoạt động. Mặc dù phiên bản mới nhất của pip đã cài đặt tập lệnh pip-2.6, nhưng không cần cài đặt tập lệnh pip-2.5.
Chris B.

2
Bạn cần cập nhật phiên bản pip python2.5 của mình ... Nó chỉ tạo pip- {PYVERSION} bên dưới python bạn đang sử dụng pip.
Hugo Tavares

4
Điều này là không chính xác. Tôi đang chạy pip 1.2.1 với Python2.7 trên Ubuntu và không có phiên bản pip thay thế nào.
Cerin

2
@rodling: có lẽ bạn đã không được cài đặt pipthông qua pip/ easy_installhoặc get-pip.pyhoặc bạn không có python2.7. nếu bạn có python2.7, hãy thử: pip install --upgrade pipvà bạn nên có pippip-2.7
Hugo Tavares

2
@JCRocamonde: chương trình pipđược chọn dựa trên biến môi trường $ PATH. Nếu bạn muốn thay đổi chương trình pip "mặc định" là gì, hãy sắp xếp lại biến môi trường $ PATH. Tìm kiếm một cái gì đó như "biến môi trường đường dẫn linux" để biết thêm chi tiết về $ PATH.
Hugo Tavares

117

Trên Windows, bạn có thể thực hiện các mô-đun pip sử dụng một phiên bản Python cho qua Python launcher , py.exenếu bạn đã chọn để cài đặt nó trong Python 3 thiết lập.

py -3 -m pip install packagename
py -2 -m pip install packagename

Bạn thậm chí có thể cụ thể hơn và yêu cầu một phiên bản phụ chính xác của Python:

py -3.6 -m pip install packagename

Để có danh sách tất cả các phiên bản Python đã cài đặt có sẵn thông qua trình khởi chạy, hãy chạy:

py --list

Ngoài ra, bạn có thể khởi chạy thực thi Python mong muốn trực tiếp:

C:/path/to/specific/python.exe -m pip install packagename

11
có cả 2.7 và 3.5 được cài đặt trên windows, điều này hoạt động ngay lập tức
phil_lgr

1
Là có cách nào để có python2, python3, pip2pip3trên Windows?
thomthom

1
Điều này làm việc cho tôi trên windows. đã cài đặt 3 và sau đó cài đặt 2
daneshjai

1
Cảm ơn bạn, điều này đã làm việc cho tôi! Không thể tin được nó khó khăn như thế nào. (Không ai trong số này hoặc các biến thể python-3.7 -m cài đặt pip hoặc cài đặt pip python-3.7 -m hoặc cài đặt pip python3.7 -m hoạt động với tôi ...)
jeppoo1

75

/path/to/python2.{5,6} /path/to/pip install PackageName không làm việc

Để làm việc trên bất kỳ phiên bản python nào chưa cài đặt pip, bạn cần tải xuống pip và thực hiện python*version* setup.py install. Ví dụ python3.3 setup.py install. Điều này giải quyết lỗi nhập trong các ý kiến. (Theo đề xuất của @hbdgaf)


4
Để làm việc trên python 3, bạn cần tải xuống pip và thực hiện "python3 setup.py install". Cá nhân tôi thấy giải pháp này không được tốt lắm. Để bắt đầu, tôi thậm chí không biết lệnh pip không phải là nhị phân. Đây không phải là một lời chỉ trích của @bwinton, tôi chỉ ngạc nhiên là không có cách nào tốt hơn để làm điều này.
Mike Vella

28
"ImportError: Không có mô-đun có tên pkg_resource"
Cerin

3
Tôi gặp khó khăn rằng vấn đề với nhà nhập khẩu có nhiều vấn đề hơn là giải pháp cho cùng một nhận xét ở trên nó.
RobotHumans

1
Ngoài ra, / path / to / pip là thế này: python2. {5,6} / Sc scripts / pip2. {5,6}
raul

2
Để gọi một mô-đun của python, bạn nên sử dụngpython2.7 -m pip install PackageName
llrs 22/2/2016

52

Tôi đã cài đặt python 2.6 theo mặc định (Amazon EC2 AMI), nhưng cần python2.7 cộng với một số gói bên ngoài cho ứng dụng của tôi. Giả sử bạn đã cài đặt python2.7 cùng với python mặc định (2.6 trong trường hợp của tôi). Dưới đây là cách cài đặt pip và gói cho python2.7 không mặc định

Cài đặt pip cho phiên bản python của bạn:

curl -O https://bootstrap.pypa.io/get-pip.py
python27 get-pip.py

Sử dụng phiên bản pip cụ thể để cài đặt gói:

pip2.7 install mysql-connector-python --allow-external mysql-connector-python

2
tuyệt vời đã làm việc cho tôi cho python 3,4 như sau: python3 get-pip.pyvà sau đó sử dụng lệnh pip vớipip34 install example
Karl Adler

Cảm ơn. Rất hữu ích. Đã thử nghiệm trên hai máy chủ khác nhau.
dùng2099484

3
Điều này hoạt động khi tôi sử dụng 'python2.7 get-pip.py' thay vì 'python27 get-pip.py'
SummerEla

Người đàn ông cảm thấy sơ sài nhưng nó đã làm việc cho tôi khi cài đặt pip2.6 trên Centos 5.
Aaron R.

Could not find a version that satisfies the requirement pip (from versions: ) No matching distribution found for pipkhi tôi đã thửpython2.6 get-pip.py
Pyderman

29

Nó làm việc cho tôi trong windows theo cách này:

  1. Tôi đã thay đổi tên của tệp python python.py và pythonw.exe thành python3.py pythonw3.py

  2. Sau đó, tôi chỉ chạy lệnh này trong lời nhắc:

    python3 -m pip install package


4
Chỉ cần cho bất cứ ai khác tìm ra cách cài đặt các gói trong python3 bằng cách sử dụng pip trên mac, lệnh này là cách bạn cài đặt các gói. Tôi đã dành hàng giờ để tìm kiếm và cuối cùng tôi đã tìm thấy nó!
sidney ngày

25

Các câu trả lời khác cho thấy cách sử dụng pip với cả Python 2.X và 3.X, nhưng không hiển thị cách xử lý trường hợp có nhiều bản phân phối Python (ví dụ: Python gốc và Python Anaconda) .

Tôi có tổng cộng 3 phiên bản Python: Python 2.7 gốc và Python 3.5 và Anaconda Python 3.5.

Đây là cách tôi cài đặt một gói vào:

  1. Python gốc 3.5 :

    /usr/bin/python3 -m pip install python-daemon
  2. Python gốc 2.7 :

    /usr/bin/python -m pip install python-daemon
  3. Anaconda Python 3.5 :

    python3 -m pip install python-daemon

    hoặc là

    pip3 install python-daemon

    Đơn giản hơn, khi Anaconda ghi đè các nhị phân Python gốc trong môi trường người dùng.

    Tất nhiên, cài đặt trong anaconda nên được thực hiện bằng condalệnh, đây chỉ là một ví dụ.


Ngoài ra, hãy chắc chắn rằng pip được cài đặt cho python cụ thể đó. Bạn có thể cần phải cài đặt thủ công pip. Điều này hoạt động trong Ubuntu 16.04:

sudo apt-get install python-pip 

hoặc là

sudo apt-get install python3-pip

Lời khuyên liên quan đến Anaconda ở đây là không chính xác ... nó không "ghi đè" bất cứ điều gì. Thực tế là việc chọn phiên bản Anaconda làm mặc định trên hệ thống của bạn chỉ đơn giản là tác dụng phụ của cấu hình cụ thể của bạn, cách bạn cài đặt từng trình thông dịch và thứ tự đường dẫn môi trường của bạn .... những thứ đó sẽ khác nhau.
Corey Goldberg

@CoreyGoldberg Tôi đồng ý, đó là mặc định khi tôi cài đặt Ubuntu 16.04
quasoft 23/2/2017

1
Thưa ngài, là người đàn ông. Trong tất cả những lời giải thích hoàn toàn vô dụng xung quanh vấn đề này, đây là điều duy nhất có ý nghĩa với tôi. Đã đến lúc bí danh những mệnh lệnh này và tiếp tục cuộc sống của tôi! CẢM ƠN BẠN.
Iofacture

14

Gần đây tôi đã gặp phải vấn đề này và thấy rằng tôi đã không nhận được đúng pip cho Python 3, trên hệ thống Linux của tôi cũng có Python 2.

Trước tiên, bạn phải đảm bảo rằng bạn đã cài đặt pip cho phiên bản python của bạn:

Đối với Python 2:

sudo apt-get install python-pip

Đối với Python 3:

sudo apt-get install python3-pip

Sau đó, để cài đặt các gói cho một phiên bản Python hoặc phiên bản khác, chỉ cần sử dụng các gói sau cho Python 2:

pip install <package>

hoặc cho Python 3:

pip3 install <package>

11

Pip cũng là một gói python. Vì vậy, cách dễ nhất để cài đặt các mô-đun cho một phiên bản python cụ thể sẽ là dưới đây

 python2.7 /usr/bin/pip install foo

hoặc là

python2.7 -m pip install foo

10

Vì vậy, rõ ràng có nhiều phiên bản easy_install pip . Nó dường như là một mớ hỗn độn lớn. Dù sao, đây là những gì tôi đã làm để cài đặt Django cho Python 2.7 trên Ubuntu 12.10:

$ 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
>>> 

8

Từ đây: https://docs.python.org/3/installing/

Dưới đây là cách cài đặt gói cho các phiên bản khác nhau được cài đặt cùng lúc linux, mac, posix :

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

Trên Windows , sử dụng trình khởi chạy py Python kết hợp với khóa -m:

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

Cũng xem xét kiểm tra: pipenv
jmunsch

7

Trên Linux, Mac OS X và các hệ thống POSIX khác, hãy sử dụng các lệnh Python được phiên bản kết hợp với công -mtắc để chạy bản sao thích hợp của pip:

python2.7 -m pip install SomePackage
python3.4 -m pip install SomePackage

(các lệnh pip được phiên bản phù hợp cũng có thể có sẵn)

Trên Windows, sử dụng pytrình khởi chạy Python kết hợp với công -mtắc:

py -2.7 -m pip install SomePackage  # specifically Python 2.7
py -3.4 -m pip install SomePackage  # specifically Python 3.4

nếu bạn gặp lỗi py -3.4thì hãy thử:

pip install SomePackage

5

Cài đặt nhiều phiên bản Python và Gói tương ứng.

Phiên bản Python trên cùng một máy windows: 2.7, 3.4 và 3.6

Cài đặt cả 3 phiên bản Python :

  • Đã cài đặt Python 2.7, 3.4 và 3.6 với các đường dẫn bên dưới

nhập mô tả hình ảnh ở đây

PATH cho cả 3 phiên bản Python :

  • Đảm bảo biến PATH (trong Biến hệ thống) có các đường dẫn bên dưới - C: \ Python27 \; C: \ Python27 \ Sc scripts; C: \ Python34 \; C: \ Python34 \ Sc scripts; C: \ Python36 \; C: \ Python36 \ ScScript \;

Đổi tên các tệp thực thi cho các phiên bản :

  • Đã thay đổi tên thực thi python trong C: \ Python36 và C: \ Python34 thành python36 và python34 tương ứng.

nhập mô tả hình ảnh ở đây

Đã kiểm tra dấu nhắc lệnh với tất cả các phiên bản:

nhập mô tả hình ảnh ở đây

Cài đặt các gói riêng cho từng phiên bản

nhập mô tả hình ảnh ở đây


Cảm ơn !!! Đây là cách tốt nhất
rakshit ks

4

Nếu bạn có nhiều phiên bản cũng như nhiều kiến ​​trúc (32 bit, 64 bit), bạn sẽ cần thêm -32 hoặc -64 vào cuối phiên bản của mình.

Đối với cửa sổ, hãy truy cập cmd và nhập py --list và nó sẽ tạo ra các phiên bản bạn đã cài đặt. Danh sách sẽ như sau:

Installed Pythons found by py Launcher for Windows
 -3.7-64 *
 -3.7-32
 -3.6-32

Lệnh đầy đủ làm ví dụ sẽ là:

py -3.6-32 -m pip install (package)

Nếu bạn muốn có được sự độc lập hơn, để cài đặt một phiên bản cụ thể của gói trên một phiên bản cụ thể của python, hãy sử dụng == (phiên bản) sau gói. Ví dụ

py -3.6-32 -m pip install opencv-python==4.1.0.25

2

Hầu hết các câu trả lời ở đây đều giải quyết vấn đề này nhưng tôi muốn thêm một cái gì đó liên tục làm tôi bối rối liên quan đến việc tạo ra một bản cài đặt trăn thay thế trong /usr/localCentOS 7. Khi tôi cài đặt ở đó, có vẻ như pip đã hoạt động kể từ khi tôi có thể sử dụng pip2.7 installvà nó sẽ cài đặt các mô-đun. Tuy nhiên, điều tôi không thể hiểu là tại sao phiên bản trăn mới cài đặt của tôi không nhìn thấy những gì tôi đang cài đặt.

Hóa ra trong CentOS 7 đã có python2.7 và pip2.7 trong /usr/binthư mục. Để cài đặt pip cho bản phân phối python mới của bạn, bạn cần nói cụ thể với sudo để đi đến/usr/local/bin

sudo /usr/local/bin/python2.7 -m ensurepip

Điều này sẽ được cài đặt pip2.7 trong /usr/local/binthư mục của bạn cùng với phiên bản python của bạn. Mẹo nhỏ là khi bạn muốn cài đặt các mô-đun, bạn cần phải sửa đổi $PATHbiến sudo để bao gồm /usr/local/binhoặc bạn cần thực thi

sudo /usr/local/bin/pip2.7 install <module>

nếu bạn muốn cài đặt một mô-đun mới. Tôi phải nhớ mãi rằng sudokhông thấy ngay lập tức /usr/local/bin.


2

Đây là vấn đề của tôi. Hoạt động cho Python3. Các tính năng chính là:

  • Mỗi phiên bản Python được biên dịch từ nguồn
  • Tất cả các phiên bản được cài đặt cục bộ
  • Không quản lý cài đặt Python mặc định của hệ thống của bạn theo bất kỳ cách nào
  • Mỗi phiên bản Python được phân lập bằng virtualenv

Các bước thực hiện như sau:

  1. Nếu bạn có một số phiên bản python bổ sung được cài đặt theo một cách khác, hãy loại bỏ chúng, ví dụ: xóa $ HOME / .local / lib / python3.x , v.v. (cũng là các phiên bản được cài đặt trên toàn cầu). Đừng chạm vào phiên bản python3 mặc định của hệ thống của bạn.

  2. Tải xuống nguồn cho các phiên bản python khác nhau theo cấu trúc thư mục sau:

    $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/
          ...
  3. Tại mỗi thư mục "Python-3.xy /", hãy làm như sau ( KHÔNG sử dụng "sudo" trong bất kỳ bước nào!):

    mkdir root
    ./configure --prefix=$PWD/root 
    make -j 2
    make install
    virtualenv --no-site-packages -p root/bin/python3.x env
  4. Tại "python_versions /" tạo các tệp như thế này:

    env_python3x.bash:
    
    #!/bin/bash
    echo "type deactivate to exit"
    source $HOME/python_versions/Python-3.x.y/env/bin/activate
  5. Bây giờ, bất cứ lúc nào bạn muốn chọn python3.x, hãy làm

    source $HOME/python_versions/env_python3x.bash

    để vào virtualenv

  6. Khi ở trong virtualenv, hãy cài đặt các gói python yêu thích của bạn với

    pip install --upgrade package_name
  7. Để thoát phiên bản virtualenv và python, chỉ cần gõ "hủy kích hoạt"

CẬP NHẬT

Dường như đó --no-site-packageslà sự phản đối. Có một cách khắc phục dễ dàng cho việc này: Một khi bạn đã kích hoạt virtualenv, chỉ cần trỏ biến HOME env đến một nơi khác ngoài thư mục chính thực tế của bạn, tức là:

export HOME=some/where/else

Một cách hay để làm điều này nói chung là:

  • Tạo virtualenv
  • Kích hoạt virtualenv
  • Nếu bạn muốn "tái chế" các thư viện hiện có vào virtualenv của mình, hãy liên kết chúng từ cài đặt hiện có của bạn, tức là ln -s $HOME/.local/lib/python3.6/site-packages/numpy $PWD/venv/lib/python3.6/site-packages/
  • Làm export PYTHONPATH=,export HOME=/some/other/dir

Bây giờ bạn nên có virtualenv tùy chỉnh cô lập.


0

Bối cảnh: Archlinux

Hành động:
Cài đặt python2-pip:
sudo pacman -S python2-pip

Bây giờ bạn có pip2.7:
sudo pip2.7 install boto

Kiểm tra (trong trường hợp của tôi, tôi cần 'boto'):
Chạy các lệnh sau:

python2
import boto

Thành công: Không có lỗi.

Thoát: Ctrl+D


0

ví dụ: nếu bạn đặt các phiên bản khác (ví dụ 3.5) làm mặc định và muốn cài đặt pip cho python 2.7:

  1. tải xuống pip tại https://pypi.python.org/pypi/pip (tar)
  2. giải nén tập tin tar
  3. cd vào thư mục của tập tin
  4. sudo python2.7 setup.py cài đặt

0

Bạn có thể truy cập ví dụ C: \ Python2.7 \ ScScript và sau đó chạy cmd từ đường dẫn đó. Sau đó, bạn có thể chạy pip2.7 cài đặt gói của bạn ...

Điều đó sẽ cài đặt gói cho phiên bản Python đó.


0

Đây có lẽ là điều hoàn toàn sai lầm (Tôi là một con trăn noob), nhưng tôi chỉ đi vào và chỉnh sửa tập tin pip

#!/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())

0

Đối với các cửa sổ cụ thể: \ path \ to \ python.exe -m pip cài đặt Gói Tên hoạt động.


0

cho máy xay sinh tố:

/usr/bin $ python3.7 -m pip install irc
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.