Radzisz sobie z wieloma wersjami Pythona i PIP?

499

Czy jest jakiś sposób, aby pipdobrze grać z wieloma wersjami Pythona? Na przykład chcę użyć, pipaby jawnie zainstalować rzeczy w mojej instalacji w wersji 2.5 lub mojej instalacji w wersji 2.6.

Na przykład, easy_installużywam easy_install-2.{5,6}.

I tak - wiem o virtualenv i nie - to nie jest rozwiązanie tego konkretnego problemu.

David Wolever
źródło
1
@YiboYang czy to działa z takimi rzeczami jak pip34i pip35?
JinSnow,
2
@JinSnow Powinno, pod warunkiem, że pip3.xfaktycznie zarządza wersją Pythona, w której chcesz zainstalować pakiety (być może uruchomić, pip3.x -Vaby zobaczyć). Lub użyj rozwiązania @ Hugo, aby mieć lepszą kontrolę nad wieloma wersjami Pythona.
Yibo Yang,
Możliwy duplikat stackoverflow.com/questions/10919569/…
Mike D3ViD Tyson

Odpowiedzi:

624

Prąd zalecenie jest do użytku python -m pip, gdzie pythonjest wersja Pythona chcesz użyć. Jest to zalecenie, ponieważ działa we wszystkich wersjach Pythona i we wszystkich formach virtualenv. Na przykład:

# 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

Poprzednia odpowiedź pozostawiona potomności:

Od wersji 0.8 Pip obsługuje pip-{version}. Możesz go używać tak samo jak easy_install-{version}:

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

EDYCJA : pip zmienił swój schemat do użycia pipVERSIONzamiast pip-VERSIONw wersji 1.5. Jeśli masz pip >= 1.5:

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

Sprawdź https://github.com/pypa/pip/pull/1053, aby uzyskać więcej informacji


Bibliografia:

Hugo Tavares
źródło
12
Nie działa Chociaż najnowsza wersja pipa zainstalowała skrypt pip-2.6, nie zawracał sobie głowy instalacją skryptu pip-2.5.
Chris B.
2
Musisz zaktualizować wersję pip python2.5 ... Tworzy tylko pip- {PYVERSION} pod pytonem, którego używasz pip.
Hugo Tavares
4
To jest niepoprawne. Korzystam z pip 1.2.1 z Python2.7 na Ubuntu i nie ma alternatywnych wersji pip.
Cerin
2
@rodling: prawdopodobnie nie zainstalowałeś się pipprzez pip/ easy_installlub get-pip.pynie masz Python2.7. jeśli masz python2.7, spróbuj: pip install --upgrade pipi trzeba mieć pipipip-2.7
Hugo Tavares
2
@JCRocamonde: program pipjest wybierany na podstawie zmiennej środowiskowej $ PATH. Jeśli chcesz zmienić „domyślny” program pip, zmień kolejność zmiennej środowiskowej $ PATH. Wyszukaj coś takiego jak „ścieżka środowiskowa zmienna linux”, aby uzyskać więcej informacji na temat $ PATH.
Hugo Tavares,
117

W systemie Windows można wykonać przy użyciu modułu pip danej wersji Pythona przez Python wyrzutni , py.exejeśli wybrano go zainstalować Python 3 podczas konfiguracji.

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

Możesz być jeszcze bardziej szczegółowy i poprosić o dokładną pod-wersję Pythona:

py -3.6 -m pip install packagename

Aby uzyskać listę wszystkich zainstalowanych wersji Python dostępnych za pośrednictwem programu uruchamiającego, uruchom:

py --list

Alternatywnie możesz uruchomić żądany plik wykonywalny Pythona bezpośrednio:

C:/path/to/specific/python.exe -m pip install packagename
Mounica T.
źródło
11
po zainstalowaniu w Windows zarówno wersji 2.7, jak i 3.5, działało to od razu
phil_lgr
1
Czy nie ma sposobu, aby mieć python2, python3, pip2a pip3na Windows?
thomthom,
1
to działało dla mnie w systemie Windows. zainstalowałem 3, a następnie zainstalowałem 2
daneshjai
1
Dziękuję, to zadziałało dla mnie! Nie mogę uwierzyć, jakie to było trudne. (Żadna z tych lub odmian python-3.7 -m pip install lub python-3.7 -m pip install lub python3.7 -m pip install działał dla mnie ...)
jeppoo1
75

/path/to/python2.{5,6} /path/to/pip install PackageName nie działa?

Aby to działało na każdej wersji Pythona, która nie ma jeszcze zainstalowanej pip, musisz pobrać pip i zrobić python*version* setup.py install. Na przykład python3.3 setup.py install. To rozwiązuje błąd importowania w komentarzach. (Zgodnie z sugestią @hbdgaf)

bwinton
źródło
4
Aby to zadziałało, powiedzmy python 3, musisz pobrać pip i wykonać „python3 setup.py install”. Osobiście uważam to rozwiązanie za niezbyt miłe. Na początek nawet nie wiedziałem, że polecenie pip nie było binarne. To nie jest krytyka @bwinton, jestem zaskoczony, że nie ma lepszego sposobu na zrobienie tego.
Mike Vella
28
„ImportError: Brak modułu o nazwie pkg_resources”
Cerin
3
Jestem zaskoczony, że problem z importerem zyskał więcej poprawek niż rozwiązanie tego samego komentarza powyżej.
RobotHumans
1
Również / path / to / pip jest to: python2. {5,6} / Scripts / pip2. {5,6}
raul
2
Aby wywołać moduł Pythona, powinieneś użyćpython2.7 -m pip install PackageName
llrs
52

Miałem domyślnie zainstalowany Python 2.6 (Amazon EC2 AMI), ale potrzebowałem Python2.7 oraz niektórych zewnętrznych pakietów dla mojej aplikacji. Zakładając, że już zainstalowałeś python2.7 wraz z domyślnym pythonem (w moim przypadku 2.6). Oto jak zainstalować pip i pakiety dla nie-domyślnego python2.7

Zainstaluj pip dla swojej wersji Pythona:

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

Użyj konkretnej wersji pip, aby zainstalować pakiety:

pip2.7 install mysql-connector-python --allow-external mysql-connector-python
Oleg
źródło
2
świetnie działało dla mnie dla Pythona 3.4 z następującymi: python3 get-pip.pya później za pomocą polecenia pip zpip34 install example
Karl Adler
Dzięki. Bardzo przydatne. Testowany na dwóch różnych serwerach.
user2099484
3
To zadziałało, gdy użyłem „python2.7 get-pip.py” zamiast „python27 get-pip.py”
SummerEla
Człowiek, który wydawał się szkicowy, ale zadziałało dla mnie, instalując pip2.6 na Centos 5.
Aaron R.
Dostałem, Could not find a version that satisfies the requirement pip (from versions: ) No matching distribution found for pipkiedy spróbowałempython2.6 get-pip.py
Pyderman
29

W systemie Windows działało to w ten sposób:

  1. Zmieniłem nazwę plików python python.py i pythonw.exe na python3.py pythonw3.py

  2. Następnie uruchomiłem to polecenie w wierszu polecenia:

    python3 -m pip install package

Angie Alejo
źródło
4
Tylko dla każdego, kto zastanawia się, jak zainstalować pakiety w python3 za pomocą pipa na Macu, to polecenie jest sposobem instalowania pakietów. Spędziłem godziny na szukaniu i wreszcie znalazłem!
sidney,
25

Inne odpowiedzi pokazują, jak używać pipa zarówno z Pythonem 2.X, jak i 3.X, ale nie pokazują, jak obsługiwać przypadek wielu dystrybucji Pythona (np. Oryginalny Python i Anaconda Python) .

Mam w sumie 3 wersje Python: oryginalny Python 2.7 i Python 3.5 oraz Anaconda Python 3.5.

Oto jak instaluję pakiet w:

  1. Oryginalny Python 3.5 :

    /usr/bin/python3 -m pip install python-daemon
  2. Oryginalny Python 2.7 :

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

    python3 -m pip install python-daemon

    lub

    pip3 install python-daemon

    Prostsze, ponieważ Anaconda zastępuje oryginalne pliki binarne Pythona w środowisku użytkownika.

    Oczywiście instalacja w anakondy powinna odbywać się za pomocą condapolecenia, to tylko przykład.


Upewnij się również, że pip jest zainstalowany dla tego konkretnego pythona. Może być konieczne ręczne zainstalowanie pipa. Działa to w Ubuntu 16.04:

sudo apt-get install python-pip 

lub

sudo apt-get install python3-pip
quasoft
źródło
Rady dotyczące Anacondy tutaj nie są dokładne ... niczego nie „zastępują”. Fakt, że domyślnie wybiera wersję Anaconda w twoim systemie, jest po prostu efektem ubocznym twojej konkretnej konfiguracji, sposobu zainstalowania każdego interpretera i porządkowania ścieżki w twoim środowisku ... będą one różne dla innych.
Corey Goldberg
@CoreyGoldberg Zgadzam się, to była domyślna wersja mojej instalacji Ubuntu 16.04
quasoft
1
Pan jest mężczyzną. Ze wszystkich całkowicie bezużytecznych wyjaśnień otaczających ten problem, jest to jedyne, które ma dla mnie sens. Czas na alias tych poleceń i zabierz się za moje życie! DZIĘKUJĘ CI.
Iofacture
14

Niedawno natknąłem się na ten problem i okazało się, że nie dostałem odpowiedniego pipa dla Pythona 3 w moim systemie Linux, który również ma Python 2.

Najpierw musisz upewnić się, że zainstalowałeś pip dla swojej wersji Pythona:

W przypadku Python 2:

sudo apt-get install python-pip

W przypadku Python 3:

sudo apt-get install python3-pip

Następnie, aby zainstalować pakiety dla jednej wersji Pythona lub drugiej, po prostu użyj następujących poleceń dla Python 2:

pip install <package>

lub dla Python 3:

pip3 install <package>
Clyde
źródło
11

pip jest także pakietem Pythona. Najłatwiejszym sposobem zainstalowania modułów w konkretnej wersji Pythona byłby poniżej

 python2.7 /usr/bin/pip install foo

lub

python2.7 -m pip install foo
Prakash Palnati
źródło
10

Najwyraźniej istnieje wiele wersji easy_install i pip . To wydaje się być wielkim bałaganem. W każdym razie tak zrobiłem, aby zainstalować Django dla Python 2.7 na 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
>>> 
Timmmm
źródło
8

Stąd: https://docs.python.org/3/installing/

Oto jak zainstalować pakiety dla różnych wersji, które są instalowane jednocześnie 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

W systemie Windows użyj programu uruchamiającego py Python w połączeniu z przełącznikiem -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
jmunsch
źródło
Rozważ również sprawdzenie: pipenv
jmunsch
7

W systemach Linux, Mac OS X i innych systemach POSIX użyj wersjonowanych poleceń Pythona w połączeniu z -mprzełącznikiem, aby uruchomić odpowiednią kopię pip:

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

(mogą być również dostępne odpowiednio wersjonowane komendy pip)

W systemie Windows użyj programu pyuruchamiającego Python w połączeniu z -mprzełącznikiem:

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

jeśli pojawi się błąd, py -3.4spróbuj:

pip install SomePackage
Saurabh Tripathi
źródło
5

Instalacja wielu wersji Pythona i odpowiednich pakietów.

Wersja Python na tym samym komputerze z systemem Windows: 2.7, 3.4 i 3.6

Instalacja wszystkich 3 wersji Pythona :

  • Zainstalowano Python 2.7, 3.4 i 3.6 z poniższymi ścieżkami

wprowadź opis zdjęcia tutaj

ŚCIEŻKA dla wszystkich 3 wersji Pythona :

  • Upewnij się, że zmienna PATH (w zmiennych systemowych) zawiera poniższe ścieżki - C: \ Python27 \; C: \ Python27 \ Scripts; C: \ Python34 \; C: \ Python34 \ Scripts; C: \ Python36 \; C: \ Python36 \ Scripts \;

Zmiana nazwy plików wykonywalnych dla wersji :

  • Zmieniono nazwę pliku wykonywalnego Pythona odpowiednio w C: \ Python36 i C: \ Python34 na python36 i python34.

wprowadź opis zdjęcia tutaj

Sprawdzone w wierszu polecenia ze wszystkimi wersjami:

wprowadź opis zdjęcia tutaj

Instalowanie pakietów osobno dla każdej wersji

wprowadź opis zdjęcia tutaj

Bahubali Patil
źródło
Dzięki !!! To najlepszy sposób
rakshit ks
4

Jeśli masz wiele wersji, a także wiele architektur (32-bitowych, 64-bitowych), musisz dodać -32 lub -64 na końcu swojej wersji.

W systemie Windows przejdź do cmd i wpisz py --list, aby wyświetlić zainstalowane wersje. Lista będzie wyglądać następująco:

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

Pełne polecenie jako przykład będzie:

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

Jeśli chcesz uzyskać większą niezależność, aby zainstalować określoną wersję pakietu na określonej wersji Pythona, użyj == (wersja) po pakiecie. Jako przykład,

py -3.6-32 -m pip install opencv-python==4.1.0.25
Brad M.
źródło
2

Większość odpowiedzi tutaj dotyczy tego problemu, ale chcę dodać coś, co ciągle mnie myliło w związku z tworzeniem alternatywnej instalacji Pythona w /usr/localCentOS 7. Kiedy tam zainstalowałem, wyglądało na to, że pip działał, ponieważ mogłem używać pip2.7 installi instalowałoby moduły. Jednak nie mogłem zrozumieć, dlaczego moja nowo zainstalowana wersja Pythona nie widziała tego, co instaluję.

W CentOS 7 okazuje się, że w /usr/binfolderze jest już Python2.7 i pip2.7 . Aby zainstalować pip dla nowej dystrybucji python, musisz konkretnie powiedzieć sudo, aby poszedł do/usr/local/bin

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

Powinno to spowodować zainstalowanie pip2.7 w twoim /usr/local/binfolderze wraz z twoją wersją Pythona. Sztuczka polega na tym, że jeśli chcesz zainstalować moduły, musisz zmodyfikować $PATHzmienną sudo , aby uwzględnić, /usr/local/binlub musisz wykonać

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

jeśli chcesz zainstalować nowy moduł. Pamiętam, że sudonie widziałem tego od razu /usr/local/bin.

JeffP
źródło
2

Oto moje podejście do problemu. Działa dla Python3. Główne cechy to:

  • Każda wersja Pythona jest kompilowana ze źródła
  • Wszystkie wersje są instalowane lokalnie
  • Nie zmienia w żaden sposób domyślnej instalacji Pythona w twoim systemie
  • Każda wersja Pythona jest izolowana za pomocą virtualenv

Kroki są następujące:

  1. Jeśli masz kilka dodatkowych wersji Pythona zainstalowanych w inny sposób, pozbądź się ich, np. Usuń $ HOME / .local / lib / python3.x itp. (Także te zainstalowane globalnie). Nie dotykaj jednak domyślnej wersji python3 systemu.

  2. Pobierz źródło dla różnych wersji Pythona w następującej strukturze katalogów:

    $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. W każdym katalogu „Python-3.xy /” wykonaj następujące czynności ( NIE używaj „sudo” w żadnym z kroków!):

    mkdir root
    ./configure --prefix=$PWD/root 
    make -j 2
    make install
    virtualenv --no-site-packages -p root/bin/python3.x env
  4. W „python_versions /” utwórz pliki takie jak to:

    env_python3x.bash:
    
    #!/bin/bash
    echo "type deactivate to exit"
    source $HOME/python_versions/Python-3.x.y/env/bin/activate
  5. Teraz, za każdym razem, gdy chcesz wybrać Python3.x, zrób

    source $HOME/python_versions/env_python3x.bash

    wejść do virtualenv

  6. Będąc w virtualenv, zainstaluj swoje ulubione pakiety python za pomocą

    pip install --upgrade package_name
  7. Aby wyjść z wersji virtualenv i python, po prostu wpisz „dezaktywuj”

AKTUALIZACJA

Wygląda na --no-site-packagesto, że jest przestarzałe. Jest na to łatwa poprawka: po aktywowaniu virtualenv, po prostu skieruj zmienną HOME env na miejsce inne niż twój rzeczywisty katalog domowy, tj .:

export HOME=some/where/else

Ogólnie dobrym sposobem na zrobienie tego jest:

  • Utwórz virtualenv
  • Aktywuj virtualenv
  • Jeśli chcesz „odzyskać” istniejące biblioteki do virtualenv, softlinkuj je z istniejącej instalacji, tj ln -s $HOME/.local/lib/python3.6/site-packages/numpy $PWD/venv/lib/python3.6/site-packages/
  • Czy export PYTHONPATH=,export HOME=/some/other/dir

Teraz powinieneś mieć niestandardowo izolowane virtualenv.

El Sampsa
źródło
0

Kontekst: Archlinux

Akcja:
zainstaluj python2-pip:
sudo pacman -S python2-pip

Masz teraz pip2.7:
sudo pip2.7 install boto

Test (w moim przypadku potrzebowałem „boto”):
Uruchom następujące polecenia:

python2
import boto

Sukces: brak błędu.

Wyjdź: Ctrl+D

Paul Parker
źródło
0

na przykład, jeśli ustawisz inne wersje (np. 3.5) jako domyślne i chcesz zainstalować pip dla Pythona 2.7:

  1. pobierz pip na https://pypi.python.org/pypi/pip (tar)
  2. rozpakuj plik tar
  3. cd do katalogu pliku
  4. sudo python2.7 setup.py install
salomeow
źródło
0

Możesz przejść na przykład do C: \ Python2.7 \ Scripts, a następnie uruchomić cmd z tej ścieżki. Następnie możesz uruchomić pip2.7, zainstalować pakiet ...

Spowoduje to zainstalowanie pakietu dla tej wersji Pythona.

bandyta_
źródło
0

Jest to prawdopodobnie całkowicie niewłaściwa rzecz (jestem pytonem noob), ale właśnie wszedłem i edytowałem plik 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())
Jerinaw
źródło
0

W przypadku systemu Windows: \ ścieżka \ do \ python.exe -m pip install nazwa_pakietu działa.

Aaquila
źródło
0

dla Blender:

/usr/bin $ python3.7 -m pip install irc
K88
źródło