Berurusan dengan beberapa versi Python dan PIP?

500

Apakah ada cara untuk pipbermain baik dengan beberapa versi Python? Sebagai contoh, saya ingin menggunakan pipuntuk menginstal secara eksplisit hal-hal baik untuk instalasi situs 2.5 atau instalasi situs 2.6.

Misalnya, dengan easy_install, saya gunakan easy_install-2.{5,6}.

Dan, ya - saya tahu tentang virtualenv, dan tidak - itu bukan solusi untuk masalah khusus ini.

David Wolever
sumber
1
@YiboYang apakah itu berfungsi dengan hal-hal seperti pip34dan pip35?
JinSnow
2
@ JinSnow Seharusnya, asalkan pip3.xsebenarnya mengelola versi python yang Anda ingin menginstal paket (mungkin berjalan pip3.x -Vuntuk melihat). Atau gunakan solusi @ Hugo untuk memiliki kontrol yang lebih baik atas banyak versi python.
Yibo Yang
Kemungkinan duplikat dari stackoverflow.com/questions/10919569/...
Mike D3ViD Tyson

Jawaban:

625

The Rekomendasi saat ini adalah untuk digunakan python -m pip, di mana pythonadalah versi Python Anda ingin menggunakan. Ini adalah rekomendasi karena ini berfungsi di semua versi Python, dan dalam semua bentuk virtualenv. Sebagai contoh:

# 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

Jawaban sebelumnya, tersisa untuk anak cucu:

Sejak versi 0.8, Pip mendukung pip-{version}. Anda dapat menggunakannya sama dengan easy_install-{version}:

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

EDIT : pip mengubah skema untuk digunakan pipVERSIONalih-alih pip-VERSIONdalam versi 1.5. Anda harus menggunakan yang berikut jika Anda memiliki pip >= 1.5:

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

Periksa https://github.com/pypa/pip/pull/1053 untuk rincian lebih lanjut


Referensi:

Hugo Tavares
sumber
12
Tidak bekerja Meskipun versi terbaru pip menginstal skrip pip-2.6, tidak perlu memasang skrip pip-2.5.
Chris B.
2
Anda perlu memperbarui versi pip python2.5 Anda ... Ini hanya membuat pip- {PYVERSION} di bawah python yang Anda gunakan pip.
Hugo Tavares
4
Ini salah. Saya menjalankan pip 1.2.1 dengan Python2.7 di Ubuntu, dan tidak ada versi pip alternatif.
Cerin
2
@rodling: mungkin Anda tidak diinstal pipmelalui pip/ easy_installatau get-pip.pyatau Anda tidak memiliki python2.7. jika Anda memiliki python2.7, coba: pip install --upgrade pipdan Anda harus memiliki pipdanpip-2.7
Hugo Tavares
2
@JCRocamonde: program pipakan dipilih berdasarkan variabel lingkungan $ PATH. Jika Anda ingin mengubah apa program pip "default", susun ulang variabel lingkungan $ PATH. Cari sesuatu seperti "path environment variable linux" untuk detail lebih lanjut tentang $ PATH.
Hugo Tavares
117

Pada Windows, Anda bisa menjalankan modul pip menggunakan versi Python diberikan melalui Python peluncur , py.exe, jika Anda memilih untuk menginstalnya selama Python 3 setup.

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

Anda bahkan bisa lebih spesifik dan meminta sub-versi Python yang tepat:

py -3.6 -m pip install packagename

Untuk mendapatkan daftar semua versi Python terpasang yang tersedia melalui peluncur, jalankan:

py --list

Atau, Anda dapat meluncurkan Python yang diinginkan yang dapat dieksekusi secara langsung:

C:/path/to/specific/python.exe -m pip install packagename
Mounica T
sumber
11
kedua 2,7 dan 3,5 diinstal pada windows, ini bekerja segera
phil_lgr
1
Apakah tidak ada cara untuk memiliki python2, python3, pip2dan pip3pada Windows?
thomthom
1
ini bekerja untuk saya di windows. telah 3 diinstal dan kemudian diinstal 2
daneshjai
1
Terima kasih, ini berhasil buat saya! Tidak bisa percaya betapa sulitnya itu. (Tidak satu pun dari ini atau variasi pemasangan pip python-3.7 -m atau pemasangan pip python-3.7 -m atau pemasangan python3.7 -m berfungsi untuk saya ...)
jeppoo1
75

/path/to/python2.{5,6} /path/to/pip install PackageName tidak bekerja?

Agar ini dapat bekerja pada versi python apa pun yang tidak memiliki pip yang sudah diinstal, Anda perlu mengunduh pip dan melakukannya python*version* setup.py install. Sebagai contoh python3.3 setup.py install. Ini menyelesaikan kesalahan impor di komentar. (Seperti yang disarankan oleh @hbdgaf)

bwinton
sumber
4
Agar ini berfungsi, katakanlah python 3, Anda perlu mengunduh pip dan melakukan "python3 setup.py install". Secara pribadi saya menemukan solusi ini tidak terlalu baik. Sebagai permulaan saya bahkan tidak tahu perintah pip bukan biner. Ini bukan kritik terhadap @bwinton, saya hanya terkejut tidak ada cara yang lebih baik untuk melakukan ini.
Mike Vella
28
"ImportError: Tidak ada modul bernama pkg_resources"
Cerin
3
Saya bingung bahwa masalah dengan importorror mendapat lebih banyak upticks daripada solusi untuk komentar yang sama di atasnya.
RobotHumans
1
Juga, / path / ke / pip adalah ini: python2. {5,6} / Scripts / pip2. {5,6}
raul
2
Untuk memanggil modul python, Anda harus menggunakanpython2.7 -m pip install PackageName
llrs
52

Saya telah menginstal python 2.6 secara default (Amazon EC2 AMI), tetapi perlu python2.7 plus beberapa paket eksternal untuk aplikasi saya. Dengan asumsi Anda sudah menginstal python2.7 bersama dengan python default (2.6 dalam kasus saya). Berikut ini cara menginstal pip dan paket untuk python2.7 non-default

Instal pip untuk versi python Anda:

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

Gunakan versi pip tertentu untuk menginstal paket:

pip2.7 install mysql-connector-python --allow-external mysql-connector-python
Oleg
sumber
2
hebat bekerja untuk saya untuk python 3.4 dengan mengikuti: python3 get-pip.pydan kemudian menggunakan perintah pip denganpip34 install example
Karl Adler
Terima kasih. Sangat berguna. Diuji pada dua server yang berbeda.
user2099484
3
Ini berhasil ketika saya menggunakan 'python2.7 get-pip.py' alih-alih 'python27 get-pip.py'
SummerEla
Orang yang merasa samar tetapi berhasil bagi saya menginstal pip2.6 pada Centos 5.
Aaron R.
Punya Could not find a version that satisfies the requirement pip (from versions: ) No matching distribution found for pipketika saya mencobapython2.6 get-pip.py
Pyderman
29

Ini bekerja untuk saya di windows dengan cara ini:

  1. Saya mengubah nama file python python.py dan pythonw.exe menjadi python3.py pythonw3.py

  2. Kemudian saya menjalankan perintah ini di prompt:

    python3 -m pip install package

Angie Alejo
sumber
4
Hanya untuk orang lain yang mencari tahu cara menginstal paket di python3 menggunakan pip pada mac, perintah ini adalah bagaimana Anda menginstal paket. Saya menghabiskan berjam-jam mencari dan akhirnya saya menemukannya!
sidney
25

Jawaban lain menunjukkan cara menggunakan pip dengan Python 2.X dan 3.X, tetapi tidak menunjukkan bagaimana menangani kasus beberapa distribusi Python (mis. Python asli dan Anaconda Python) .

Saya memiliki total 3 versi Python: asli Python 2.7 dan Python 3.5 dan Anaconda Python 3.5.

Inilah cara saya menginstal paket ke:

  1. Python Asli 3.5 :

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

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

    python3 -m pip install python-daemon

    atau

    pip3 install python-daemon

    Lebih sederhana, karena Anaconda menimpa biner Python asli di lingkungan pengguna.

    Tentu saja, menginstal di anaconda harus dilakukan dengan condaperintah, ini hanya sebuah contoh.


Juga, pastikan pip diinstal untuk python spesifik tersebut. Anda mungkin perlu menginstal pip secara manual. Ini berfungsi di Ubuntu 16.04:

sudo apt-get install python-pip 

atau

sudo apt-get install python3-pip
quasoft
sumber
Saran mengenai Anaconda di sini tidak akurat ... itu tidak "menimpa" apa pun. Fakta bahwa ia mengambil versi Anaconda sebagai default pada sistem Anda hanyalah efek samping dari konfigurasi spesifik Anda, bagaimana Anda menginstal setiap penerjemah, dan pemesanan jalur lingkungan Anda .... itu akan berbeda untuk yang lain.
Corey Goldberg
@CoreyGoldberg Saya setuju, itu adalah default pada instalasi Ubuntu 16.04 saya
quasoft
1
Anda Tuan, adalah pria itu. Dari semua penjelasan yang sama sekali tidak berguna tentang masalah ini, ini adalah satu-satunya yang masuk akal bagi saya. Waktu untuk alias perintah ini dan melanjutkan hidupku! TERIMA KASIH.
Iofacture
14

Saya mengalami masalah ini sendiri baru-baru ini dan menemukan bahwa saya tidak mendapatkan pip yang tepat untuk Python 3, pada sistem Linux saya yang juga memiliki Python 2.

Pertama, Anda harus memastikan bahwa Anda telah menginstal pip untuk versi python Anda:

Untuk Python 2:

sudo apt-get install python-pip

Untuk Python 3:

sudo apt-get install python3-pip

Kemudian untuk menginstal paket untuk satu versi Python atau yang lain, cukup gunakan yang berikut untuk Python 2:

pip install <package>

atau untuk Python 3:

pip3 install <package>
clyde
sumber
11

pip juga merupakan paket python. Jadi cara termudah untuk menginstal modul ke versi python tertentu adalah di bawah ini

 python2.7 /usr/bin/pip install foo

atau

python2.7 -m pip install foo
Prakash Palnati
sumber
10

Jadi ternyata ada beberapa versi easy_install dan pip . Tampaknya menjadi kekacauan besar. Bagaimanapun, inilah yang saya lakukan untuk menginstal Django untuk Python 2.7 di 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
sumber
8

Dari sini: https://docs.python.org/3/installing/

Berikut adalah cara menginstal paket untuk berbagai versi yang diinstal pada saat yang sama 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

Di Windows , gunakan py python launcher dalam kombinasi dengan -m switch:

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
sumber
Juga pertimbangkan untuk memeriksa: pipenv
jmunsch
7

Di Linux, Mac OS X dan sistem POSIX lainnya, gunakan perintah Python versi dalam kombinasi dengan -msakelar untuk menjalankan salinan yang sesuai dari pip:

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

(perintah pip yang diversiasikan dengan tepat mungkin juga tersedia)

Di Windows, gunakan pypeluncur Python dalam kombinasi dengan -msakelar:

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

jika Anda mendapatkan kesalahan untuk py -3.4kemudian coba:

pip install SomePackage
Saurabh Tripathi
sumber
5

Instalasi beberapa versi Python dan Paket masing-masing.

Versi python pada mesin windows yang sama: 2.7, 3.4 dan 3.6

Instalasi semua 3 versi Python :

  • Menginstal Python 2.7, 3.4 dan 3.6 dengan jalur di bawah ini

masukkan deskripsi gambar di sini

PATH untuk semua 3 versi Python :

  • Pastikan variabel PATH (dalam Variabel Sistem) memiliki jalur di bawah termasuk - C: \ Python27 \; C: \ Python27 \ Scripts; C: \ Python34 \; C: \ Python34 \ Scripts; C: \ Python36 \; C: \ Python36 \ Scripts \;

Mengganti nama executable untuk versi :

  • Mengubah nama yang dapat dieksekusi python di C: \ Python36 dan C: \ Python34 menjadi python36 dan python34.

masukkan deskripsi gambar di sini

Diperiksa untuk command prompt dengan semua versi:

masukkan deskripsi gambar di sini

Menginstal paket secara terpisah untuk setiap versi

masukkan deskripsi gambar di sini

Bahubali Patil
sumber
Terima kasih !!! Ini adalah cara terbaik
rakshit ks
4

Jika Anda memiliki banyak versi dan juga beberapa arsitektur (32 bit, 64 bit) Anda harus menambahkan -32 atau -64 di akhir versi Anda.

Untuk windows, buka cmd dan ketik py --list dan itu akan menghasilkan versi yang telah Anda instal. Daftarnya akan terlihat seperti berikut:

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

Perintah lengkap sebagai contoh adalah:

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

Jika Anda ingin mendapatkan lebih dalam, untuk menginstal versi tertentu dari paket pada versi python tertentu, gunakan == (versi) setelah paket. Sebagai contoh,

py -3.6-32 -m pip install opencv-python==4.1.0.25
Brad M
sumber
2

Sebagian besar jawaban di sini membahas masalah ini tetapi saya ingin menambahkan sesuatu yang terus membingungkan saya sehubungan dengan membuat instalasi alternatif python di /usr/localpada CentOS 7. Ketika saya menginstal di sana, sepertinya pip berfungsi karena saya dapat menggunakan pip2.7 installdan itu akan menginstal modul. Namun, apa yang saya tidak tahu adalah mengapa versi python saya yang baru diinstal tidak melihat apa yang saya instal.

Ternyata di CentOS 7 bahwa sudah ada python2.7 dan pip2.7 di /usr/binfolder. Untuk menginstal pip untuk distribusi python baru Anda, Anda perlu secara khusus memberitahu sudo untuk pergi ke/usr/local/bin

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

Ini harus menginstal pip2.7 di /usr/local/binfolder Anda bersama dengan versi python Anda. Kuncinya adalah ketika Anda ingin menginstal modul, Anda harus memodifikasi $PATHvariabel sudo untuk dimasukkan /usr/local/binatau Anda perlu mengeksekusi

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

jika Anda ingin memasang modul baru. Butuh saya selamanya untuk mengingat bahwa sudotidak segera melihat /usr/local/bin.

JeffP
sumber
2

Inilah pendapat saya tentang masalah ini. Bekerja untuk Python3. Fitur utamanya adalah:

  • Setiap versi Python dikompilasi dari sumber
  • Semua versi diinstal secara lokal
  • Tidak memotong-motong instalasi Python default sistem Anda dengan cara apa pun
  • Setiap versi Python diisolasi dengan virtualenv

Langkah-langkahnya adalah sebagai berikut:

  1. Jika Anda memiliki beberapa versi python tambahan yang diinstal dengan cara lain, singkirkan, misalnya, hapus $ HOME / .local / lib / python3.x , dll. (Juga yang diinstal secara global). Jangan sentuh versi python3 default sistem Anda.

  2. Sumber unduhan untuk versi python yang berbeda di bawah struktur direktori berikut:

    $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. Di setiap direktori "Python-3.xy /", lakukan hal berikut ( JANGAN gunakan "sudo" di salah satu langkah!):

    mkdir root
    ./configure --prefix=$PWD/root 
    make -j 2
    make install
    virtualenv --no-site-packages -p root/bin/python3.x env
  4. Di "python_versions /" buat file seperti ini:

    env_python3x.bash:
    
    #!/bin/bash
    echo "type deactivate to exit"
    source $HOME/python_versions/Python-3.x.y/env/bin/activate
  5. Sekarang, kapan saja Anda ingin memilih python3.x, lakukan

    source $HOME/python_versions/env_python3x.bash

    untuk memasuki virtualenv

  6. Saat berada di virtualenv, instal paket python favorit Anda dengan

    pip install --upgrade package_name
  7. Untuk keluar dari versi virtualenv dan python cukup ketik "nonaktifkan"

MEMPERBARUI

Tampaknya --no-site-packagessudah usang. Ada perbaikan yang mudah untuk ini: Setelah Anda mengaktifkan virtualenv, cukup arahkan variabel HOME env ke tempat lain selain direktori home Anda yang sebenarnya, yaitu:

export HOME=some/where/else

Cara yang baik untuk melakukan ini secara umum adalah:

  • Buat virtualenv
  • Aktifkan virtualenv
  • Jika Anda ingin "mendaur ulang" pustaka yang ada ke virtualenv Anda, softlink mereka dari instalasi yang ada, yaitu ln -s $HOME/.local/lib/python3.6/site-packages/numpy $PWD/venv/lib/python3.6/site-packages/
  • Melakukan export PYTHONPATH= ,export HOME=/some/other/dir

Sekarang Anda harus memiliki virtualenv yang di-custom.

El Sampsa
sumber
0

Konteks: Archlinux

Tindakan:
Instal python2-pip:
sudo pacman -S python2-pip

Anda sekarang memiliki pip2.7:
sudo pip2.7 install boto

Tes (dalam kasus saya, saya perlu 'boto'):
Jalankan perintah berikut:

python2
import boto

Berhasil: Tidak ada kesalahan.

Keluar: Ctrl+D

Paul Parker
sumber
0

misalnya, jika Anda menetapkan versi lain (misalnya 3.5) sebagai default dan ingin menginstal pip untuk python 2.7:

  1. unduh pip di https://pypi.python.org/pypi/pip (tar)
  2. unzip file tar
  3. cd ke direktori file
  4. sudo python2.7 setup.py instal
salomeow
sumber
0

Anda dapat pergi ke misalnya C: \ Python2.7 \ Script dan kemudian jalankan cmd dari jalur itu. Setelah itu Anda dapat menjalankan pip2.7 menginstal paket Anda ...

Itu akan menginstal paket untuk versi Python.

penjahat_
sumber
0

Ini mungkin hal yang sepenuhnya salah untuk dilakukan (saya adalah python noob), tapi saya baru saja masuk dan mengedit file 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
sumber
0

Khusus untuk windows: \ path \ to \ python.exe -m pip instal PackageName berfungsi.

Aaquila
sumber
0

untuk Blender:

/usr/bin $ python3.7 -m pip install irc
K88
sumber