Latar belakang :
Karena saya mengembangkan program python yang harus dijalankan pada versi python yang berbeda, saya telah menginstal versi python yang berbeda di komputer saya.
Saya menggunakan FC 13 sehingga ia datang dengan python 2.6 pra-instal di /usr/bin/python2.6
dan /usr/lib/python2.6
.
Saya menginstal python 2.5 dari sumber, dan untuk menjaga semuanya tetap rapi, saya menggunakan --prefix=/usr
opsi, yang menginstal python di /usr/bin/python2.5
dan /usr/lib/python2.5
.
Sekarang, ketika saya menjalankan python
prompt saya menunjukkan saya menggunakan versi 2.5. Namun, saya mengalami beberapa masalah dengan pemasangan.
Manajemen paket :
Menggunakan easy_install, paket selalu diinstal /usr/lib/python2.6/site-packages/
. Saya mengunduh setuptools
.egg untuk python 2.5 dan mencoba menginstalnya, tetapi itu memberi saya kesalahan:
/usr/lib/python2.5/site-packages does NOT support .pth files
Tampaknya python2.5 tidak ada di PYTHONPATH saya. Saya pikir instalasi default akan menambah dirinya sendiri ke PYTHONPATH, tetapi ketika saya menulis echo $PYTHONPATH
di promt, saya hanya menerima baris kosong.
Ini terdengar seperti aplikasi yang sempurna untuk virtualenv , alat yang sangat populer untuk membuat lingkungan Python yang terisolasi. Ini adalah perintah sampel untuk menentukan versi Python
sumber
virtualenv
adalah solusi dalam hal ini. Lihat jawaban saya.Itu karena distutils menambahkan baris shebang ke semua skrip yang diinstal. Jika Anda menjalankan
easy_install
skrip secara langsung, skrip dieksekusi dengan penerjemah yang diinstal dengan (sesuai dengan baris shebang). Yangeasy_install
dijalankan tergantung padaPATH
tidak AndaPYTHONPATH
. Jika Anda ingin menginstal sebuah paket dengan Python 2.5 misalnya, Anda harus menjalankaneasy_install
juru bahasa Python yang menentukan untuk digunakan:Sebenarnya
virtualenv
tidak membantu di sini karena harus dibuat dalam konteks basis Python yang persis sama dengan menjalankan masalaheasy_install
. Itulah gunanya--python
argumenvirtualenv
. Untuk beberapa alasaneasy_install
tidak memberikan argumen analog sehingga harus dijalankan dengan juru bahasa Python khusus seperti yang ditunjukkan di atas.sumber
Saya juga menggunakan Fedora 13 dan
PYTHONPATH
tidak disetel.Dalam python,
sys.path
akan memberi Anda daftar jalur yang digunakan untuk mengimpor skrip.Saya tidak terbiasa dengan bagaimana
easy_install
memutuskan direktori tujuannya tetapi saya yakin akan ada argumen baris perintah yang bisa Anda berikan.Coba tentukan versi python mana yang akan dijalankan
easy_install
dengan mendahului perintah Anda dengan path lengkap ke python yang Anda inginkan.Juga periksa apakah
easy_install
symlink di bin ke skrip dalam satu versi python yang telah Anda instal.sumber
Virtualenv jelas merupakan anugerah di sini.
Dalam pengaturan saya, saya memiliki variabel lingkungan
VIRTUALENV_USE_DISTRIBUTE
diatur ke 1, sehingga paket distribusi yang lebih modern digunakan daripada setuptools. Saya membuat lingkungan virtual untuk dua versi Python di sistem saya seperti:Saya kemudian membuat tiga alias di
.bashrc
:Jadi saya dapat menggunakan
py2
untuk beralih ke default Python 2.6 danpy3
untuk beralih ke default Python 3.2. Masukidle
akan menjalankan versi IDLE mana pun yang sesuai untuk lingkungan virtual saya.Instalasi paket ke salah satu lingkungan virtual ini biasanya hanya melibatkan
pip install
perintah.sumber