2011-08-04 14 views
10

Użyłem python_select, wydaje się, że nie zmienia domyślnego pythona do wykonywania skryptów, na przykład django-admin.py runserver (bez pythona z przodu).Macports wybrać domyślny interpreter języka Python do wykonywania skryptów?

Jak mogę to zmienić?

+1

Myślę, że to może być lepiej umieszczone na SuperUser ... – thegrinner

+0

Jest możliwe, że można go przesłonić przez pierwszy wiersz '#!' W plikach .py. –

+0

Tak, można go zastąpić przez '#!', W ​​rzeczy samej, ale pytanie OP dotyczy konkretnie domyślnego interpretera Pythona. – fviktor

Odpowiedz

19

Istnieje /usr/bin/python, który jest zwykle wcześniejszy w ścieżce (ma wyższy priorytet) niż folder binarny MacPort (/opt/local/bin/python). Skrypt python_select zmienia tylko /opt/local/bin/python, więc musisz upewnić się, że żaden inny plik binarny python na twojej ścieżce nie ma nad nim pierwszeństwa.

Solution (jako root):

mv /usr/bin/python /usr/bin/python.orig 
ln -s /opt/local/bin/python /usr/bin/python 
port select --set python python26 

Upewnij się zastąpić python26 w trzeciej linii z przeznaczeniem wersji Pythona.

To działało dla mnie kilka dni temu z MacPort 2.0.0. Jeśli masz starszą bibliotekę MacPorts, powinieneś ją zaktualizować lub użyć python_select zamiast port select --set python.

+2

Prostszym i bezpieczniejszym sposobem jest umieszczenie/opt/local/bin wcześniej w ścieżce PATH. Aby to zrobić, gdy można wykonać następujące czynności w powłoki bash: '' 'export PATH =/opt/local/bin: $ PATH''' lub edytować ~/.bash_profile i dodaj linię do końca pliku. Zasadniczym błędem jest modyfikowanie Pythona systemu tak, jakbyś go łamał, możesz złamać wszelkie narzędzia lub narzędzia na komputerze Mac, które używają Pythona systemu. Edycja: formatowanie. –

+0

@MickT: Zrobiłem to, co sugerowałeś, ponieważ uważam, że to lepsze podejście. Potrafię zweryfikować, że '/ opt/local/bin' znajduje się na górze mojej zmiennej' PATH', ale kiedy wpisuję 'which python', podaje listę zaczynającą się od'/usr/local/bin/python'. Każdy pomysł, dlaczego "który" daje inną kolejność niż "PATH"? – jvriesem

+0

@jvriesem Jeśli '' '/ usr/local/bin /' '' znajduje się na twojej ścieżce, to najpierw '' '/ usr/local/bin/python''' będzie pierwszym znalezionym Pythonem. Czy coś nie rozumiem? Jeśli tak, proszę opublikować dane wyjściowe: echo $ PATH –

Powiązane problemy