2009-09-05 12 views
5

Jeśli zainstalujesz wiele wersji Pythona (mam obecnie domyślną wersję 2.5, zainstalowaną wersję 3.0.1 i teraz zainstalowaną wersję 2.6.2), automatycznie umieszcza ona elementy w /usr/local, a także dostosowuje ścieżkę do pliku /Library/Frameworks/Python/Versions/theVersion/bin, ale jaki jest sens, gdy /usr/local jest już na ścieżce PATH, a wszystkie zainstalowane wersje (z wyjątkiem domyślnego 2.5, który jest w /usr/bin) są w tym miejscu? Usunąłem ścieżki struktur Pythona z mojej zmiennej PATH w .bash_profile i nadal mogę wpisać "python -V" => "Python 2.5.1", "python2.6 -V" => "Python 2.6.2", "python3 -V" => "Python 3.0.1". Zastanawiam się tylko, dlaczego umieszcza go w /usr/local, a także zmienia PATH. I co zrobiłem dobrze? Dzięki.OS X - wiele wersji Pythona, PATH i/usr/local

Również instalacja 2.6 sprawiły, że „obecny” jeden, mający .../Python.framework/Versions/Current punkt 2.6., Więc zwykłe rzeczy "Pythona w /usr/local/bin punktu do 2,6, ale to nie ma znaczenia, ponieważ usr/bin przychodzi pierwszy i rzeczy z to samo co tam, do 2.5 rzeczy. W każdym razie, 2.5 jest wyposażony w lamparta, zainstalowałem 3.0.1 tylko po to, aby mieć najnowszą wersję (która ma plik dmg), a teraz zainstalowałem 2.6.2 do użytku z pygame.

EDYCJA: OK, oto jak to rozumiem. Po zainstalowaniu, powiedzmy, Python 2.6.2: Kilka linków symbolicznych jest dodawanych do /usr/local/bin, więc gdy istnieje skrypt w języku python, będzie on działał, a w /Applications/Python 2.6 uruchomiona zostanie domyślna aplikacja Python Launcher. py pliki, które używają /usr/local/bin/pythonw i /Library/Frameworks/Python.framework/Versions/2.6/bin są tworzone i dodawane do początku ścieżki, więc which python dostanie python tam, a także #! /usr/bin/env python shebang będzie działał poprawnie.

+0

co z pakietem virtualenv Pythona? wydaje się to dość popularnym sposobem posiadania wielu instalacji Pythona na jednym komputerze. Czy inni użytkownicy robili to na swoich urządzeniach OS X? – Foofy

Odpowiedz

5

Nie ma żadnej a priori gwarancji, że/usr/local/bin pozostanie na PATH (zwłaszcza, że ​​niekoniecznie pozostanie "przed"/usr/bin! -), więc jest całkowicie uzasadnione, aby instalator zapewnił specjalnie potrzebny katalog /Library/.../bin wchodzi do PATH. Dodatkowo, może się zdarzyć, że /Library/.../bin ma dodatkowe elementy, które nie są dowiązane do/usr/local/bin, chociaż uważam, że obecnie nie ma to miejsca w przypadku niedawnych standardowych dystrybucji Pythona dla Maca.

Jeśli wiesz, że sposób uporządkowania ścieżki i dokładny zestaw plików wykonywalnych, z których będziesz korzystać, są w pełni usatysfakcjonowane z/usr/local/bin, to całkiem możliwe, że usuniesz/Biblioteki/etc katalogi z własnej ścieżki, oczywiście.

+0

Co się stanie, jeśli usunę, powiedzmy, Python 2.6?Mogłem go usunąć z/Applications i /Library/..../Versions/2.6.2, ale co z/usr/local /? Czy nie zostawiłabyś pękniętych dowiązań symbolicznych? I nie chciałbym się tu wtrącać, próbując wyłuskać 2.6.2. Nie wiem. – mk12

+0

Tak, musielibyśmy w szczególności usunąć (kilka) dowiązania symboliczne o wielkości 2.6, chyba że "używam dystrybucji zawierającej" odinstalowanie "(uważam, że standardowa wersja z Python.org nie działa) -' ls -l/usr/local/bin | grep 'Python. * 2.6' 'łatwo je rozpozna, oczywiście, więc nie ma "bałaganu" ani "próby wybrania". –

+0

Nie mogę też pozbyć się wszystkiego w/usr/local/bin i po prostu umieścić /Python.framework/Versions/x.x.x/bin na ścieżce w dowolnej kolejności? – mk12

0

Właśnie zauważyłem/napotkałem ten problem na moim Macu. Mam Pythona 2.5.4, 2.6.2 i 3.1.1 na moim komputerze i szukałem sposobu na łatwe przełączanie się między nimi. To wtedy zauważyłem wszystkie dowiązania symboliczne dla plików wykonywalnych, które znalazłem w obu "/ usr/bin" i "/ usr/local/bin". Zrzuciłem wszystkie niesynchroniczne dowiązania symboliczne, zostawiając python2.5, python2.6, itp. I napisałem skrypt powłoki bash, który mogę uruchomić jako root, aby zmienić jedno dowiązanie symboliczne, którego używam do kierowania ścieżki do wybranej wersji

„/Library/Frameworks/Python.framework/Versions/Current”

Jedyną złą rzeczą zgrywania dowiązania symboliczne się, czy jest jakaś inna aplikacja potrzebne im z jakiegoś powodu. Moja opinia na temat tego, dlaczego te dowiązania symboliczne są tworzone jest podobna do oceny Alexa, instalator stara się objąć wszystkie podstawy. Wszystkie moje wersje zostały zainstalowane przez instalatora, chociaż starałem się skompilować własne, aby umożliwić pełne wsparcie 64-bitowe, a podczas kompilowania i instalowania własnego możesz wybrać, że nie masz utworzonych dowiązań symbolicznych lub zmieniono PATH podczas instalacja.

Powiązane problemy