Python'un farklı sürümlerini kullanma


21

Arkaplan :

Farklı python sürümlerinde çalışması gereken python programları geliştirdiğimden bilgisayarıma farklı python sürümleri yükledim.

O piton 2.6 önceden yüklenmiş ile geldi yüzden FC 13 kullanıyorum /usr/bin/python2.6ve /usr/lib/python2.6.

Kaynaktan python 2.5'i yükledim ve işleri düzenli tutmak için --prefix=/usr, python'u /usr/bin/python2.5ve içine yerleştiren seçeneği kullandım /usr/lib/python2.5.

Şimdi, istemimi çalıştırdığımda pythonsürüm 2.5 kullandığımı gösteriyor. Ancak, yükleme ile ilgili bazı sorunlar yaşıyorum.

Paket yönetimi :

Easy_install kullanılarak paketler her zaman yüklenir /usr/lib/python2.6/site-packages/. setuptoolsPython 2.5 için .egg dosyasını indirdim ve yüklemeye çalıştım, fakat bu bana bir hata verdi:

/usr/lib/python2.5/site-packages does NOT support .pth files

Görünüşe göre python2.5 PYTHONPATH'de yok. Varsayılan kurulumun kendini PYTHONPATH'e ekleyeceğini düşündüm, ancak echo $PYTHONPATHtanıtım yazarken , sadece boş bir satır alıyorum.

Yanıtlar:


20

Birden çok Python sürümünün yüklü olması için önerilen yol, her birini kaynaktan kurmaktır - birlikte mutlu bir şekilde birlikte bulunacaktır. Gerekli bağımlılıkları kurmak için sanalenv'i uygun tercüman ile kullanabilirsiniz (pip veya easy_install). Birden fazla tercümanın kaynağından daha kolay kurulmasının püf noktası kullanmaktır:

sudo make altinstall

normal "sudo make install" yerine. Bu sürüm numarasını çalıştırılabilir dosyaya ekleyecektir (böylece python-2.5, python-2.6, python-3.2 vs.).


2
Altinstall + virtualenv = python geliştirme yazılımı. Teşekkürler!
Alex,

13

Bu , izole edilmiş Python ortamları oluşturmak için popüler bir araç olan virtualenv için mükemmel bir uygulama gibi geliyor . Bu Python sürümünü belirtmek için örnek bir komuttur

$ virtualenv --python=/usr/bin/python2.6 myvirtualenv

virtualenvBu durumda çözüm olduğunu sanmıyorum . Cevabımı gör.
Piotr Dobrogost

5

Kullanarak easy_install, paketler her zaman /usr/lib/python2.6/site-packages/

Bunun nedeni distutils'in kurulu tüm komut dosyalarına shebang satırı eklemesidir. Eğer çalıştırırsanız easy_installsenaryoyu doğrudan buna (shebang hattına göre) ile yüklenmiş tercüman çalıştırılmaktadır. Hangi easy_installçalıştırılıyor size bağlı PATHdeğildir PYTHONPATH. Python 2.5 örneğinde bir paket kurmak istiyorsanız easy_install, kullanılacak Python yorumlayıcısını belirterek çalıştırmalısınız :

/usr/bin/python2.5/python easy_install ...

Kesinlikle konuşmak virtualenv, burada çalışan ile tamamen aynı olan temel Python bağlamında yaratılması gerektiği için burada yardımcı olmuyor easy_install. En neyi Yani --pythonbir argüman virtualenviçindir. Bazı nedenlerden dolayı easy_installbenzer argüman sağlamaz, bu yüzden yukarıda gösterildiği gibi belirli Python yorumlayıcısı ile çalıştırılmalıdır.


Bu benim ilk cevabım ve umarım ilk Necromancer rozeti de :)
Piotr Dobrogost

Çok iyi açıklama, teşekkür ederim! Necromancer rozeti iyi kazanılmış;)
Alex

2

Ayrıca Fedora 13 kullanıyorum ve PYTHONPATHayarlanmadı.

Python içinde sys.pathsize komut dosyalarını almak için kullanılan yolların bir listesini verir.

easy_installHedef dizinine nasıl karar verdiğime aşina değilim , ancak verebileceğiniz bir komut satırı argümanı olacağından eminim.

easy_installİstediğiniz pythonun tam yolu ile komutunuzdan önce hangi python sürümünün çalıştırılacağını belirlemeyi deneyin .

Ayrıca easy_install, yüklediğiniz bir python sürümünde bir betiğe bin sembolik bağlantı olup olmadığını da kontrol edin .


1

Virtualenv burada kesinlikle bir nimettir.

Kurulumumda, ortam değişkeni VIRTUALENV_USE_DISTRIBUTE1 olarak ayarlandı, böylece setuptools yerine daha modern Distribute paketi kullanılıyor. Sistemimdeki Python'un iki sürümü için sanal ortamlar oluşturdum.

$ virtualenv -p python2.6 py2
$ virtualenv -p python3.2 py3

Sonra üç takma ad oluşturdum .bashrc:

alias py2='source $HOME/py2/bin/activate'
alias py3='source $HOME/py3/bin/activate'
alias idle='python -m idlelib.idle'

Böylece py2Python 2.6 py3varsayılanına geçmek için ve Python 3.2 varsayılanına geçmek için kullanabilirim. Girme idle, içinde bulunduğum sanal ortam için hangi IDLE sürümü uygunsa çalışacaktır.

Paketlerin bu sanal ortamlardan birine kurulması genellikle bir pip installkomut gerektirir .

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.