Bagaimana membuat Mercurial menemukan versi terbaru dari Python?

1

Sistem saya adalah RedHat 5 Linux dan memiliki standar python 2.4 diinstal. Untuk mengeksekusi Lincah 1,81, saya mencoba memutakhirkan python dari 2.4 untuk 2.6 dan saya pikir saya menyimpannya di direktori yang berbeda. Saya telah memasang tautan keras python 2.6 untuk ular sanca . Sekarang, saya menghapusnya dan berharap membuat python menunjuk kembali ke python 2.4 untuk menghindari konflik versi.

Ini adalah perintah yang saya gunakan untuk menghapus tautan keras di antaranya ular sanca dan python 2.6 :

find -xdev -samefile /usr/bin/python | xargs rm

maka saya menggunakan perintah sebagai:

 ln -s /usr/bin/python2.4 /usr/bin/python
 ln -s /usr/bin/python2.6 /usr/local/bin/python
 export PATH=/usr/local/bin:$PATH
 Change first line of hg to #!/usr/bin/env python
 PYTHONHOME=/usr/lib/python2.6
 PYTHONPATH=/usr/lib/python2.6 

Lalu ketika saya mengetik "whereis python", berikut hasilnya.

python: /usr/bin/python2.4 
/usr/bin/python 
/usr/lib/python2.4 
/usr/lib/python2.6 
/usr/local/bin/python 
/usr/include/python2.4 
/usr/include/python2.6 
/usr/share/man/man1/python.1.gz

Lalu saat saya mengetik which python, itu menunjuk usr/bin/python. Saat saya mengetik python -V, itu menunjukkan python 2.4.3. Tampaknya menunjuk kembali ke 2.4.3 . Lalu, saat saya menggunakan perintah

python -c "import sys; print '\n' .join(sys.path)"

itu menunjukkan

 /usr/lib64/python24.zip
    /usr/lib64/python2.4
    /usr/lib64/python2.4/plat-linux2
    /usr/lib64/python2.4/lib-tk
    /usr/lib64/python2.4/lib-dynload
    /usr/lib64/python2.4/site-packages
    /usr/lib64/python2.4/site-packages/Numeric
    /usr/lib64/python2.4/site-packages/gtk-2.0
    /usr/lib/python2.4/site-packages

Saya mencoba mencari jalan setapak python 2.6 dengan mengetik find / -name python2.6, itu menunjukkan

/usr/include/python2.6
/usr/lib/python2.6
/usr/lib64/python2.6

Ini pertanyaan saya:

  1. Bagaimana saya bisa mengganti ganti hasil dari on-liner di atas ke python 2.6 ?
  2. Mengapa saya tidak dapat menemukan direktori seperti /usr/bin/python2.6 atau /usr/local/bin/python2.6 ? Apakah ini berarti saya menginstal python 2.6 direktori salah atau tidak sengaja dihapus? Apakah ada yang salah dengan hasil yang saya dapatkan dari perintah yang saya masukkan?
  3. Tahu bagaimana membuat sistem dieksekusi python 2.6 ketika saya menggunakan "hg push"?
  4. Haruskah saya menginstal python 2.6 lagi di / usr / local / bin?
Cassie
sumber
Anda hanya perlu Python 2.4 untuk menjalankan versi Mercurial apa pun, bahkan Mercurial 2.1. Apakah Anda mencoba menggunakan Python 2.6 untuk mendapatkan dukungan yang lebih baik untuk memverifikasi sertifikat SSL?
Martin Geisler
Ketika saya menggunakan perintah seperti "hg push", sistem mengeluh dengan pesan kesalahan seperti "batalkan: pemeriksaan sertifikat memerlukan Python 2.6". Saya berasumsi itu berarti itu memerlukan Python 2.6 atau saya salah? Terima kasih
Cassie
Python 2.6 diperlukan untuk memeriksa sertifikat SSL. Saya sedikit terkejut karena gagal, tetapi Anda bisa mencobanya hg push --insecure untuk memberi tahu Mercurial bahwa Anda tidak dapat memverifikasi sertifikat dengan Python Anda. Saya pikir Anda juga dapat mengkonfigurasi sidik jari host, lihat halaman wiki .
Martin Geisler
Hai, terima kasih banyak ~. Saya mencoba "hg push --insecure". Ia menghindari kesalahan sertifikat dan biarkan saya berhasil mendorong. Apakah akan ada masalah jika saya menggunakan hg push --insecure?
Cassie
@Raystafarian Apakah Anda membantu mengedit pertanyaan yang diposting? Terima kasih banyak,:)
Cassie

Jawaban:

0
  1. Memasang virtualenv dan virtualenvwrapper (easy_install bekerja untuk saya, tetapi jangan lupa untuk menambahkan baris source /usr/local/bin/virtualenvwrapper.sh ke skrip startup shell Anda dan kemudian sumber skrip startup untuk menggunakan pembungkus)
  2. Menjalankan mkvirtualenv -p /usr/lib/python2.6 ENVNAME (dimana ENVNAME adalah apa pun yang Anda ingin beri nama, mungkin hg?)
  3. Menambahkan workon ENVNAME ke skrip init shell Anda (.profile,. * shrc, dll)

Sekarang sistem Anda masih dapat menggunakan 2.4, dan semua shell Anda akan menggunakan 2.6. Hati-hati, karena ini dapat memutuskan panggilan ke aplikasi yang diinstal sistem lainnya, jika ketergantungannya tidak di lingkungan virtual Anda. Tapi, karena Anda sekarang memiliki pip, itu seharusnya mudah pip install $WHATEVER_IS_MISSING (atau jalankan deactivate perintah untuk keluar dari lingkungan virtual Anda, lakukan hal Anda, dan workon kembali ke tempat Anda sebelumnya).

Jika Anda menemukan instance hg dimulai oleh proses di luar shell (mis. Integrasi manajer file?) Maka saya sarankan menempatkan skrip kecil ini di jalur Anda dan mengonfigurasi proses tersebut untuk menjalankannya.

#!/bin/bash # or whatever your shell is
workon ENVNAME
hg $*

(Catatan, Anda dapat menonaktifkan (ENVNAME) prompt dengan pengaturan VIRTUAL_ENV_DISABLE_PROMPT lebih awal dalam skrip init Anda daripada workon baris)

Nate Parsons
sumber