Jak sprawić, by Mercurial znalazł zaktualizowaną wersję Pythona?


1

Mój system to RedHat 5 Linux i ma domyślnie zainstalowany Python 2.4 . Aby uruchomić Mercurial 1.81, próbowałem zaktualizować Pythona z 2.4 do 2.6 i pomyślałem, że zapisałem go w innym katalogu. Umieściłem twardy link z Pythona 2.6 do Pythona . Teraz go usunąłem i mam nadzieję, że Python będzie wskazywał na Python 2.4 , aby uniknąć konfliktu wersji.

Oto polecenie, którego użyłem do usunięcia twardego łącza między Pythonem a Pythonem 2.6 :

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

następnie użyłem poleceń jako:

 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 

Potem, gdy wpisałem „whereis python”, oto wyniki.

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

Potem, kiedy pisałem which python, wskazał usr/bin/python. Kiedy pisałem python -V, pokazało się python 2.4.3. Wydaje się wskazywać na 2.4.3 . Potem, kiedy użyłem polecenia

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

to pokazało

 /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

Próbowałem znaleźć ścieżki do Pythona 2.6 , pisząc find / -name python2.6, że to pokazuje

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

Oto moje pytania:

  1. Jak mogę zmienić zamianę wyników z powyższej wersji na Python 2.6 ?
  2. Dlaczego nie mogę znaleźć katalogu takiego jak /usr/bin/python2.6lub /usr/local/bin/python2.6? Czy to znaczy, że źle zainstalowałem mój python 2.6 lub przypadkowo usunąłem katalog? Czy coś jest nie tak z wynikami, które uzyskałem po wpisaniu poleceń?
  3. Masz pomysł, jak zmusić system do uruchomienia Pythona 2.6, gdy użyłem „hg push”?
  4. Czy powinienem ponownie zainstalować Python 2.6 w / usr / local / bin?

Potrzebujesz tylko Pythona 2.4, aby uruchomić dowolną wersję Mercurial, nawet Mercurial 2.1. Czy próbujesz użyć języka Python 2.6, aby uzyskać lepszą obsługę weryfikacji certyfikatów SSL?
— Martin Geisler

Kiedy użyłem polecenia takiego jak „hg push”, system narzekał na komunikat o błędzie, taki jak „przerwanie: sprawdzanie certyfikatu wymaga Pythona 2.6”. Zakładam, że oznacza to, że wymaga Python 2.6 lub się mylę? Dzięki
— Cassie,

Python 2.6 jest wymagany do sprawdzania certyfikatów SSL. Jestem trochę zaskoczony, że przerywa, ale możesz spróbować hg push --insecurepoinformować Mercurial, że nie możesz zweryfikować certyfikatów za pomocą Pythona. Myślę, że możesz również skonfigurować odcisk palca hosta, zobacz stronę wiki .
— Martin Geisler,

Cześć Dziękuję bardzo ~. Próbowałem „hg push --insecure”. Pozwoliło to uniknąć błędu certyfikatów i pozwoliło mi pomyślnie przesłać. Czy będzie jakiś problem, jeśli użyję hg push --insecure?
— Cassie,

@Raystafarian Czy pomogłeś w edycji opublikowanego pytania? Dziękuję bardzo :)
— Cassie,

Odpowiedzi:


0
  1. Zainstaluj virtualenv i virtualenvwrapper (easy_install zadziałało dla mnie, ale nie zapomnij dodać linii source /usr/local/bin/virtualenvwrapper.shdo skryptu uruchamiania powłoki, a następnie źródła skryptu uruchamiania, aby użyć opakowania)
  2. Uruchom mkvirtualenv -p /usr/lib/python2.6 ENVNAME( ENVNAMEmoże jak chcesz to nazwać hg?)
  3. Dodaj workon ENVNAMEdo skryptu inicjującego powłokę (.profile,. * Shrc itp.)

Teraz twój system będzie nadal mógł używać 2.4, a wszystkie twoje powłoki będą używać 2.6. Zachowaj ostrożność, ponieważ może to przerwać połączenia z innymi aplikacjami zainstalowanymi w systemie, jeśli ich zależności nie są w środowisku wirtualnym. Ale ponieważ masz teraz pip, powinno to być łatwe pip install $WHATEVER_IS_MISSING(lub uruchomić deactivatepolecenie, aby porzucić środowisko wirtualne, zrobić swoje i workonwrócić do miejsca, w którym byłeś).

Jeśli znajdziesz instancje hg uruchomione przez procesy poza powłokami (np. Integracja menedżera plików?), Zalecam umieszczenie tego małego skryptu na ścieżce i skonfigurowanie tych procesów, aby go wywoływały.

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

(Uwaga: możesz wyłączyć (ENVNAME)monit, ustawiając VIRTUAL_ENV_DISABLE_PROMPTwcześniej w skrypcie init wcześniej niż workonwiersz)

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.