Beberapa versi Python di mesin yang sama?

89

Apakah ada dokumentasi resmi di situs web Python di suatu tempat, tentang cara menginstal dan menjalankan beberapa versi Python di mesin yang sama di Linux?

Saya dapat menemukan ribuan posting blog dan jawaban, tetapi saya ingin tahu apakah ada cara resmi "standar" untuk melakukan ini?

Atau apakah ini semua tergantung pada OS?

Andriy Drozdyuk
sumber

Jawaban:

79

Saya pikir itu sepenuhnya independen. Instal saja, lalu Anda memiliki perintah misalnya /usr/bin/python2.5dan /usr/bin/python2.6. Tautkan /usr/bin/pythonke yang ingin Anda gunakan sebagai default.

Semua pustaka berada di folder terpisah (dinamai menurut versi).

Jika Anda ingin mengkompilasi versi secara manual, ini dari file readme kode sumber Python:

Menginstal beberapa versi

Pada sistem Unix dan Mac jika Anda bermaksud untuk menginstal beberapa versi Python menggunakan awalan instalasi yang sama (argumen --prefix ke skrip konfigurasi) Anda harus berhati-hati agar python utama Anda yang dapat dieksekusi tidak ditimpa oleh instalasi versi yang berbeda. Semua file dan direktori yang diinstal menggunakan "make altinstall" berisi versi mayor dan minor dan dengan demikian dapat hidup berdampingan. "make install" juga membuat $ {prefix} / bin / python3 yang mengacu pada $ {prefix} /bin/pythonX.Y. Jika Anda bermaksud menginstal beberapa versi menggunakan awalan yang sama, Anda harus memutuskan versi mana (jika ada) yang merupakan versi "utama" Anda. Instal versi itu menggunakan "make install". Instal semua versi lain menggunakan "make altinstall".

Misalnya, jika Anda ingin menginstal Python 2.5, 2.6, dan 3.0 dengan versi utama 2.6, Anda harus menjalankan "make install" di direktori build 2.6 Anda dan "make altinstall" di direktori lain.

Felix Kling
sumber
5
Terima kasih, "make install" pada primary dan "make altinstall" pada secondary memperjelas.
Andriy Drozdyuk
4
Adakah cara yang benar untuk berbagi pustaka antar versi? Katakanlah saya memiliki MySQLdb untuk 2.6, lalu menginstal 2.7. bagaimana cara membuat MySQLdb tersedia untuk 2.7 juga?
romeroqj
Semua informasi yang Anda berikan adalah untuk Unix / Linux dan Mac OS, jadi jelas tidak "sepenuhnya independen" dari OS, seperti yang diminta OP. Untuk Windows prosesnya sangat berbeda tetapi sama-sama mudah.
wwwayne
28

Pada Windows, mereka diinstal ke folder terpisah, "C: \ python26" dan "C: \ python31", tetapi file yang dapat dieksekusi memiliki nama "python.exe" yang sama.

Saya membuat folder "C: \ python" lain yang berisi "python.bat" dan "python3.bat" yang masing-masing berfungsi sebagai pembungkus untuk "python26" dan "python31", dan menambahkan "C: \ python" ke PATHvariabel lingkungan.

Ini memungkinkan saya untuk mengetik pythonatau python3dalam pembungkus .bat Python saya untuk memulai yang saya inginkan.

Di Linux, Anda dapat menggunakan #!trik untuk menentukan versi mana yang ingin Anda gunakan skrip.

Manusia Timah
sumber
Apa yang harus ditambahkan ke file .bat itu?
Aidis
Tidak akan memberi suara positif pada jawaban ini hanya karena ini sangat spesifik untuk Windows dan pertanyaannya terkait dengan Linux, jika tidak info yang bagus.
Jim Aho
2
Pengguna sudah tidak ada lagi, saya sangat menginginkan file batch itu
Wargog
6
Ini yang saya masukkan ke file python.bat saya (hanya satu baris): "c: \ python27 \ python% *" Kemudian saya hanya memanggilnya secara normal, yaitu 'python test.py' dan% * akan mengambil semua argumen dan meneruskannya ke file yang dapat dieksekusi. Anda juga dapat menggunakan mklink secara langsung di folder C: \ bin Anda. Lihat di sini untuk detailnya: stackoverflow.com/a/13953614/865929
Sean Glover
1
Sekarang Anda bisa menjalankannya py -3.4atau py -2.7dan program py(di bawah C:\Windows) akan memilih interpreter python itu (dengan asumsi sudah diinstal).
JamesThomasMoon1979
14

Perbarui 2019: Menggunakan asdf

Hari-hari ini saya menyarankan menggunakan asdf untuk menginstal berbagai versi interpreter Python di samping satu sama lain.

Note1: asdfberfungsi tidak hanya untuk Python tetapi untuk semua bahasa utama.

Note2: asdfberfungsi dengan baik dalam kombinasi dengan pengelola paket populer seperti pipenv dan puisi .

Jika Anda telah menginstal asdf, Anda dapat dengan mudah mengunduh / menginstal interpreter Python baru:

# Install Python plugin for asdf:
asdf plugin-add python

# List all available Python interpreters:
asdf list-all python

# Install the Python interpreters that you need:
asdf install python 3.7.4
asdf install python 3.6.9
# etc...

# If you want to define the global version:
asdf global python 3.7.4

# If you want to define the local (project) version:
# (this creates a file .tool-versions in the current directory.)
asdf local python 3.7.4

Jawaban Lama: Instal Python dari sumber

Jika Anda perlu menginstal beberapa versi Python (di sebelah yang utama) di Ubuntu / Mint : (harus bekerja serupa di Unix lain.)

1) Instal Paket yang Diperlukan untuk kompilasi sumber

$ sudo apt-get install build-essential checkinstall
$ sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

2) Unduh dan ekstrak versi Python yang diinginkan

Unduh Sumber Python untuk Linux sebagai tarball dan pindahkan ke /usr/src.

Ekstrak paket yang diunduh di tempatnya. (ganti 'x dengan versi unduhan Anda)

$ sudo tar xzf Python-x.x.x.tgz

3) Kompilasi dan Instal Sumber Python

$ cd Python-x.x.x
$ sudo ./configure
$ sudo make altinstall

Tempat sampah Python baru Anda sekarang berada di /usr/local/bin. Anda dapat menguji versi baru:

$ pythonX.X -V
Python x.x.x
$ which pythonX.X
/usr/local/bin/pythonX.X

# Pip is now available for this version as well:
$ pipX.X -V
pip X.X.X from /usr/local/lib/pythonX.X/site-packages (python X.X)
Rotareti
sumber
6

Cara menginstal versi Python yang berbeda memang bergantung pada OS.

Namun, jika Anda menggunakan linux, Anda dapat menggunakan alat seperti pythonbrew atau pythonz untuk membantu Anda mengelola dan beralih di antara versi yang berbeda dengan mudah.

Rodrigue
sumber
Saya telah menginstal di mac dengan configure / make altinstall. Tidak ada masalah sejauh ini.
Evgeny
Apakah mungkin untuk memberikan $user1versi python selain default?
Roland
1
@Roland pyenvakan bekerja untuk itu. Dari readme di tautan yang diposting di atas:> [Lets] Anda mengubah versi Python global per pengguna.
theeddieh
5

Saya menggunakan Mac & cara terbaik yang berhasil untuk saya adalah menggunakan pyenv!

Perintah di bawah ini untuk Mac tetapi sangat mirip dengan Linux (lihat tautan di bawah)

#Install pyenv
brew update
brew install pyenv

Katakanlah Anda memiliki python 3.6 sebagai versi utama Anda di mac Anda:

python --version 

Keluaran:

Python <your current version>

Sekarang Instal python 3.7, daftar pertama semua

pyenv install -l

Mari kita ambil 3.7.3:

pyenv install 3.7.3

Pastikan untuk menjalankan ini di Terminal (tambahkan ke ~ / .bashrc atau ~ / .zshrc):

export PATH="/Users/username/.pyenv:$PATH"
eval "$(pyenv init -)"

Sekarang mari kita jalankan hanya di terminal / shell yang terbuka :

pyenv shell 3.7.3

Sekarang lari

python --version

Keluaran:

Python 3.7.3

Dan yang tidak kalah penting, unset itu di shell / iTerm yang terbuka:

pyenv shell --unset

Anda dapat menjalankannya secara global atau lokal juga

Kohn1001
sumber
1

Manajer Paket - tingkat pengguna

Untuk manajer paket yang dapat menginstal dan mengelola beberapa versi python, ini adalah pilihan yang bagus:

  • pyenv - hanya dapat menginstal dan mengelola versi python
  • asdf - dapat menginstal dan mengatur berbagai bahasa

Keuntungan dari manajer paket ini adalah mungkin lebih mudah untuk mengaturnya dan menginstal beberapa versi python dengan mereka daripada menginstal python dari sumbernya. Mereka juga menyediakan perintah untuk dengan mudah mengubah versi python yang tersedia menggunakan shims dan mengatur versi python per-direktori.

Kerugian ini adalah, secara default, mereka diinstal di tingkat pengguna (di dalam direktori home Anda) dan memerlukan sedikit konfigurasi tingkat pengguna - Anda harus mengedit file Anda ~/.profiledan ~/.bashrcatau yang serupa. Ini berarti tidak mudah menggunakannya untuk menginstal beberapa versi python secara global untuk semua pengguna. Untuk melakukan ini, Anda dapat menginstal dari sumber bersamaan dengan versi python OS yang ada.


Instalasi dari sumber - seluruh sistem

Anda membutuhkan hak akses root untuk metode ini.

Lihat dokumentasi resmi python untuk membangun dari sumber untuk pertimbangan dan opsi tambahan.

/usr/localadalah lokasi yang ditentukan bagi administrator sistem untuk menginstal perangkat lunak bersama (seluruh sistem), jadi subdirektorinya adalah tempat yang baik untuk mengunduh dan menginstal sumber python. Lihat bagian 4.9 dari Standar Hierarki File Linux Foundation .

Instal dependensi build apa pun. Pada sistem berbasis Debian, gunakan:

apt update
apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libsqlite3-dev libreadline-dev libffi-dev libbz2-dev

Pilih versi python mana yang ingin Anda instal. Lihat halaman Rilis Sumber Python untuk daftar.

Unduh dan unzip file /usr/local/src, ganti di X.X.Xbawah ini dengan versi python (yaitu 3.8.2).

cd /usr/local/src
wget https://www.python.org/ftp/python/X.X.X/Python-X.X.X.tgz
tar vzxf Python-X.X.X.tgz

Sebelum membuat dan menginstal, setel CFLAGSvariabel lingkungan dengan tanda compiler C yang diperlukan (lihat makedokumentasi GNU ). Ini biasanya tidak diperlukan untuk penggunaan umum, tetapi jika, misalnya, Anda akan membuat plugin uWSGI dengan versi python ini, Anda mungkin ingin menyetel flag -fPIC, dengan yang berikut:

export CFLAGS='-fPIC'

Ubah direktori kerja ke direktori sumber python yang telah dibuka ritsletingnya, dan konfigurasikan build. Anda mungkin ingin menggunakan --enable-optimizationsopsi pada ./configureperintah untuk pengoptimalan terpandu profil . Gunakan --prefix=/usr/localuntuk menginstal ke subdirektori yang tepat ( /usr/local/bin, /usr/local/lib, dll).

cd Python-X.X.X
./configure --enable-optimizations --prefix=/usr/local

Bangun proyek dengan makedan instal dengan make altinstalluntuk menghindari menimpa file apa pun saat menginstal beberapa versi. Lihat peringatan di halaman dokumentasi build python ini.

make -j 4
make altinstall

Kemudian Anda harus dapat menjalankan versi python dan pip baru Anda dengan pythonX.Xdan pipX.X(yaitu python3.8dan pip3.8). Perhatikan bahwa jika versi minor dari instalasi baru Anda sama dengan versi OS (misalnya jika Anda menginstal python3.8.4 dan OS menggunakan python3.8.2), maka Anda perlu menentukan seluruh jalur ( /usr/local/bin/pythonX.X) atau menyetel alias untuk menggunakan versi ini.

kucing biru
sumber
0

Ini sangat bergantung pada sistem distribusi paket yang Anda gunakan. Misalnya, dengan MacPorts, Anda dapat menginstal beberapa paket Python dan menggunakan pyselectutilitas untuk mengganti default dengan mudah. Setiap saat, Anda dapat memanggil interpreter Python yang berbeda dengan menyediakan jalur lengkap, dan Anda dapat menautkan ke semua pustaka dan header Python dengan menyediakan jalur lengkap untuk itu.

Jadi pada dasarnya, apa pun cara Anda menginstal versinya, selama Anda memisahkan instalasi, Anda dapat menjalankannya secara terpisah.

Seth Johnson
sumber
Apa itu sistem distribusi paket?
Andriy Drozdyuk
@drozzy: Misalnya RPM yang digunakan oleh OpenSuse atau apt yang digunakan oleh distribusi berbasis Debian atau portage yang digunakan oleh Gentoo dll. Pada dasarnya ini adalah alat untuk menginstal perangkat lunak.
Felix Kling
0

Saya melakukan ini dengan navigator anaconda. Saya menginstal navigator anaconda dan membuat dua lingkungan pengembangan berbeda dengan versi python yang berbeda

dan beralih di antara versi python yang berbeda dengan mengalihkan atau mengaktifkan dan menonaktifkan lingkungan.

pertama instal navigator anaconda dan kemudian buat lingkungan.

lihat bantuan di sini tentang cara mengelola lingkungan

https://docs.anaconda.com/anaconda/navigator/tutorials/manage-environments/

Ini adalah video untuk melakukannya dengan conda

https://youtu.be/EGaw6VXV3GI

mohitesachin217
sumber