Aynı makinede birden fazla Python sürümü mü?


89

Python web sitesinde, Linux'ta aynı makineye birden çok Python sürümünün nasıl kurulup çalıştırılacağına dair resmi belgeler var mı?

Milyonlarca blog yazısı ve yanıtı bulabilirim, ancak bunu yapmanın "standart" bir resmi yolu olup olmadığını bilmek istiyorum.

Yoksa bunların hepsi işletim sistemine mi bağlı?

Yanıtlar:


79

Bence tamamen bağımsız. Sadece kurun, sonra örneğin /usr/bin/python2.5ve komutlarına sahip olursunuz /usr/bin/python2.6. /usr/bin/pythonVarsayılan olarak kullanmak istediğinize bağlantı verin .

Zaten tüm kitaplıklar ayrı klasörlerdedir (sürümün adını taşır).

Sürümleri manuel olarak derlemek istiyorsanız, bu Python kaynak kodunun benioku dosyasındandır:

Birden çok sürüm kurmak

Unix ve Mac sistemlerinde, Python'un birden çok sürümünü aynı yükleme önekini (yapılandırma betiğine --prefix argümanı) kullanarak yüklemeyi düşünüyorsanız, birincil python yürütülebilir dosyanızın üzerine farklı bir sürümün yüklenmesiyle yazılmamasına dikkat etmelisiniz. "Make altinstall" kullanılarak yüklenen tüm dosyalar ve dizinler, ana ve alt sürümleri içerir ve bu nedenle yan yana yaşayabilir. "make install" ayrıca $ {önek} /bin/pythonX.Y'ye başvuran $ {önek} / bin / python3 oluşturur. Aynı öneki kullanarak birden çok sürüm kurmayı düşünüyorsanız, hangi sürümün (varsa) "birincil" sürümünüz olduğuna karar vermelisiniz. Bu sürümü "make install" kullanarak kurun. Diğer tüm sürümleri "make altinstall" kullanarak kurun.

Örneğin, birincil sürüm 2.6 olan Python 2.5, 2.6 ve 3.0'ı kurmak istiyorsanız, 2.6 yapı dizininizde "make install" ve diğerlerinde "altinstall yap" komutunu yürütürsünüz.


5
Teşekkürler, birincil üzerinde "make install" ve ikincil üzerinde "altinstall yapmak" bunu netleştirdi.
Andriy Drozdyuk

4
Kitaplıkları sürümler arasında paylaşmanın doğru bir yolu var mı? Diyelim ki 2.6 için MySQLdb'im var, sonra 2.7'yi kurdum. MySQLdb'yi 2.7 için de nasıl kullanılabilir hale getirebilirim?
romeroqj

Verdiğiniz tüm bilgiler Unix / Linux ve Mac OS içindir, dolayısıyla OP'nin sorduğu gibi açıkça işletim sisteminden "tamamen bağımsız" değildir. Windows için süreç oldukça farklı ama aynı derecede kolaydır.
wwwayne

28

Windows'ta "C: \ python26" ve "C: \ python31" klasörlerine yüklenirler, ancak çalıştırılabilir dosyalar aynı "python.exe" adına sahiptir.

Sırasıyla "python26" ve "python31" için sarmalayıcı görevi gören "python.bat" ve "python3.bat" içeren başka bir "C: \ python" klasörü oluşturdum ve PATHortam değişkenine "C: \ python" ekledim .

Bu, istediğimi başlatmak için .bat Python sarmalayıcılarımı yazmama pythonveya python3yazmama izin veriyor .

Linux'ta, #!bir komut dosyasının hangi sürümü kullanmasını istediğinizi belirtmek için bu numarayı kullanabilirsiniz.


Bu .bat dosyalarına ne eklenmeli?
Aidis

Bu yanıtı yalnızca Windows'a özgü olduğu ve sorunun Linux ile ilgili olduğu için oylamayacaksınız, aksi takdirde harika bir bilgi.
Jim Aho

2
Kullanıcı artık mevcut değil, o toplu iş dosyasını gerçekten istedim
Wargog

6
Bu benim python.bat dosyama koyduğum şeydir (sadece bir satır): "c: \ python27 \ python% *" Sonra onu normal olarak çağırırım, yani 'python test.py' ve% * tüm argümanları alacaktır ve bunu gerçek yürütülebilir dosyaya aktarın. Mklink'i doğrudan C: \ bin klasörünüzde de kullanabilirsiniz. Ayrıntılar için buraya bakın: stackoverflow.com/a/13953614/865929
Sean Glover

1
Şimdi sadece çalıştırabilirsiniz py -3.4veya py -2.7ve program py(altında C:\Windows) bu python yorumlayıcısını seçecektir (kurulu olduğu varsayılarak).
JamesThomasMoon1979

14

2019 Güncellemesi: Kullanma asdf

Bu günlerde , Python yorumlayıcılarının çeşitli sürümlerini yan yana kurmak için asdf kullanmanızı öneriyorum .

Not1: asdfyalnızca Python için değil, tüm ana diller için çalışır.

Not 2: pipenv ve şiirasdf gibi popüler paket yöneticileriyle birlikte iyi çalışır .

Eğer varsa asdf yüklü kolayca indirmek / yeni Python tercümanlar yükleyebilirsiniz:

# 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

Eski Cevap: Python'u kaynaktan yükleyin

Ubuntu / Mint'e birden fazla Python sürümünü (ana sürümün yanında) yüklemeniz gerekiyorsa : (diğer Unix'lerde de benzer şekilde çalışmalıdır.)

1) Kaynak derlemesi için Gerekli Paketleri Kurun

$ 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) İstenen Python sürümünü indirin ve çıkarın

Linux için Python Kaynağını tarball olarak indirin ve taşıyın /usr/src.

İndirilen paketi yerinde çıkarın. ('x'leri indirdiğiniz sürümle değiştirin)

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

3) Python Kaynağını Derleyin ve Yükleyin

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

Yeni Python kutunuz artık konumunda /usr/local/bin. Yeni sürümü test edebilirsiniz:

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

6

Farklı Python sürümlerinin nasıl kurulacağı gerçekten işletim sistemine bağlıdır.

Ancak, Linux'taysanız, farklı sürümleri kolayca yönetmenize ve aralarında geçiş yapmanıza yardımcı olması için pythonbrew veya pythonz gibi bir araç kullanabilirsiniz .


Configure / make altinstall ile bir mac'a yükledim. Şimdiye kadar sorun yok.
Evgeny

$user1Varsayılandan başka bir python sürümü vermek mümkün mü ?
Roland

1
@Roland pyenvbunun için çalışacak. Yukarıda yayınlanan bağlantıdaki benioku dosyasından:> Genel Python sürümünü kullanıcı bazında değiştirmenize izin verir.
theeddieh

5

Mac kullanıyorum ve benim için işe yarayan en iyi yol pyenv kullanmak!

Aşağıdaki komutlar Mac içindir ancak Linux'a oldukça benzerdir (aşağıdaki bağlantılara bakın)

#Install pyenv
brew update
brew install pyenv

Mac'inizde birincil sürümünüz olarak python 3.6'ya sahip olduğunuzu varsayalım:

python --version 

Çıktı:

Python <your current version>

Şimdi python 3.7'yi kurun, önce hepsini listeleyin

pyenv install -l

3.7.3'ü ele alalım:

pyenv install 3.7.3

Bunu Terminal'de çalıştırdığınızdan emin olun (~ / .bashrc veya ~ / .zshrc'ye ekleyin):

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

Şimdi onu sadece açık uçbirim / kabukta çalıştıralım :

pyenv shell 3.7.3

Şimdi koş

python --version

Çıktı:

Python 3.7.3

Ve daha az önemli değildir tanımsız açılan kabuk / iTerm o:

pyenv shell --unset

Global veya yerel olarak da çalıştırabilirsiniz


1

Paket Yöneticileri - kullanıcı düzeyi

Python'un birden çok sürümünü kurabilen ve yönetebilen bir paket yöneticisi için bunlar iyi seçimlerdir:

  • pyenv - yalnızca python sürümlerini yükleyebilir ve yönetebilir
  • asdf - birçok farklı dili kurabilir ve yönetebilir

Bu paket yöneticilerinin avantajları, python'u kaynaktan kurmaktan daha kolay kurup birden fazla python sürümünü yüklemenin daha kolay olabileceğidir. Ayrıca, mevcut python sürümlerini şim kullanarak kolayca değiştirmek ve dizin başına python sürümünü ayarlamak için komutlar sağlarlar.

Bu dezavantaj, varsayılan olarak, kullanıcı düzeyinde (ana dizininizin içinde) kurulmaları ve biraz kullanıcı düzeyinde yapılandırma gerektirmeleridir - ~/.profileve ~/.bashrcveya benzeri dosyalarınızı düzenlemeniz gerekir . Bu, tüm kullanıcılar için küresel olarak birden fazla python sürümünü yüklemek için bunları kullanmanın kolay olmadığı anlamına gelir. Bunu yapmak için, işletim sisteminin mevcut python sürümünün yanı sıra kaynaktan da yükleyebilirsiniz.


Kaynaktan kurulum - sistem genelinde

Bu yöntem için kök ayrıcalıklarına ihtiyacınız olacak.

Ek hususlar ve seçenekler için kaynaktan derlemeye yönelik resmi python belgelerine bakın .

/usr/localbir sistem yöneticisinin paylaşılan (sistem genelinde) yazılımı kurması için belirlenmiş konumdur, bu nedenle alt dizinleri python kaynağını indirmek ve yüklemek için iyi bir yerdir. Linux Foundation'ın Dosya Hiyerarşisi Standardının 4.9 bölümüne bakın .

Tüm derleme bağımlılıklarını yükleyin. Debian tabanlı sistemlerde şunları kullanın:

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

Hangi python sürümünü yüklemek istediğinizi seçin. Bkz Python Kaynak Bültenleri bir liste için sayfayı.

Aşağıdakini python sürümü (yani ) ile /usr/local/srcdeğiştirerek dosyayı indirin ve açın .X.X.X3.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

Oluşturmadan ve kurmadan önce, CFLAGSgerekli olan C derleyici bayrakları ile ortam değişkenini ayarlayın (GNU makebelgelerine bakın ). Bu genellikle genel kullanım için gerekli değildir, ancak örneğin bu python sürümüyle bir uWSGI eklentisi oluşturacaksanız -fPIC, aşağıdaki gibi bayrakları ayarlamak isteyebilirsiniz :

export CFLAGS='-fPIC'

Çalışma dizinini sıkıştırılmamış python kaynak dizinine değiştirin ve yapıyı yapılandırın. Profil yönlendirmeli optimizasyon için komuttaki--enable-optimizations seçeneği muhtemelen kullanmak isteyeceksiniz . Kullanım uygun alt dizinlerine (yüklemek için , vs.)../configure--prefix=/usr/local/usr/local/bin/usr/local/lib

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

Birden çok sürüm yüklerken herhangi bir dosyanın geçersiz kılınmasını önlemek için projeyi ile oluşturun makeve yükleyin make altinstall. Python oluşturma belgelerinin bu sayfasındaki uyarıya bakın .

make -j 4
make altinstall

O zaman yeni python ve pip sürümlerinizi pythonX.Xve pipX.X(yani python3.8ve pip3.8) ile çalıştırabilmelisiniz. Yeni kurulumunuzun küçük sürümü işletim sisteminin sürümüyle aynıysa (örneğin, python3.8.4 yüklüyorsanız ve işletim sistemi python3.8.2 kullanıyorsa), tüm yolu ( /usr/local/bin/pythonX.X) belirtmeniz veya bir bu sürümü kullanmak için takma ad.


0

En çok, kullandığınız paket dağıtım sistemine bağlıdır. Örneğin, MacPorts ile birden fazla Python paketi kurabilir pyselectve varsayılanı aralarında kolaylıkla değiştirmek için yardımcı programı kullanabilirsiniz . Her zaman, tam yolu sağlayarak farklı Python yorumlayıcılarını çağırabilir ve bunlar için tam yolları sağlayarak tüm Python kitaplıklarına ve başlıklarına bağlanabilirsiniz.

Yani temelde, sürümleri ne şekilde kurarsanız kurun, kurulumlarınızı ayrı tuttuğunuz sürece, onları ayrı ayrı çalıştırabilirsiniz.


Paket dağıtım sistemi nedir?
Andriy Drozdyuk

@drozzy: Örneğin OpenSuse tarafından kullanılan RPM veya Debian tabanlı dağıtımlar tarafından kullanılan apt veya Gentoo tarafından kullanılan portage vb. Temelde yazılım yüklemek için bir araçtır.
Felix Kling

0

Bunu anaconda gezgini ile yaptım. Anaconda gezginini kurdum ve farklı python sürümlerine sahip iki farklı geliştirme ortamı oluşturdum

ve ortamları değiştirerek veya etkinleştirerek ve devre dışı bırakarak farklı python sürümleri arasında geçiş yapın.

önce anaconda gezginini kurun ve ardından ortamlar oluşturun.

ortamların nasıl yönetileceğiyle ilgili yardıma bakın

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

İşte conda ile yapmak için video

https://youtu.be/EGaw6VXV3GI

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.