Jeśli skonfigurujesz środowisko wirtualne za pomocą: „python3 -m venv my-venv”, to z dowolnego terminala aktywuj to środowisko wirtualne, wywołując „source ... / my-env / bin / aktywować”, to python 3.5 będzie domyślnie w tym terminalu. Możesz sprawdzić bieżącą wersję domyślną, wywołując „python -V”.
Craig Hicks,
chociaż twoja odpowiedź jest pomocna, zapytałem dlaczego. nie jak. i to jest wielka debata. tutaj. dlaczego domyślnie powinna być starsza wersja zamiast bieżącej wersji.
givonz
1
Masz całkowitą rację co do mojego „komentarza”! Dlatego napisałem komentarz, a nie odpowiedź.
Craig Hicks
Odpowiedzi:
56
Nie wiem, jakie „dokumenty” czytasz, ani co mówią, ale /usr/bin/pythonjest to tylko symboliczny link do domyślnej wersji Pythona, w tym przypadku 2.7, który jest wynikiem pisania pythonna terminalu. Jest to wynik PEP 394, który to definiuje
na razie wszystkie dystrybucje powinny zapewnić, że pythonodnoszą się do tego samego celu copython2 .
type pythoni file /usr/bin/pythonpotwierdzi to.
Powodem tego innego układu niż konwencja jest to, że pakiet źródłowy python-defaults w Xenial to wersja 2.7.11 , więc dowiązanie symboliczne python wskazuje na tę wersję.
Aby użyć Pythona 3, musisz wyrazić się wyraźnie i wpisać python3w linii poleceń, co jest zalecane w przypadku, gdy potrzebujesz konkretnej wersji, możesz to również zrobić, wpisując Python 2 python2. Ubuntu domyślnie zawiera zarówno wersje Python 2, jak i 3 we wszystkich bieżących wersjach.
Aby uzyskać Python 3.5 REPL lub uruchomić zgodny skrypt, wpisz python3. Ma to na celu zachowanie zgodności ze wszystkimi starszymi wersjami Pythona 2.x (które zawsze były i pozostaną powiązane python).
Myślnik może znaleźć, pythonjeśli skonfigurujesz .desktopdla niego plik (in ~/.local/share/applications/), aby otworzyć terminal i na przykład uruchomić REPL. Nie ma domyślnego środowiska REPL GUI dla Pythona, a normalnym oczekiwaniem interfejsu jest to, że użytkownik pójdzie do terminala.
Mówienie o domyślnym pythonie 3.5 to opiekunowie przenoszący wszystkie skrypty systemowe z python 2.x na python 3.x, nie że python 3 zastąpiłby python 2 we wszystkich przypadkach.
tak, myślę, że poprawne pytanie brzmi: jak dodać Python3 do mojej ścieżki, aby działał automatycznie?
givonz
masz na myśli, w jaki sposób uzyskać skrypty Pythona do wykonywania jak skompilowany program?
Andrew Keech
mam to, dzieki. po prostu wpisz python3 w wierszu polecenia.
givonz
2
AIUI, co zrobić w dłuższej perspektywie z / usr / bin / python, jest wciąż pytaniem otwartym. Najlepszą praktyką dla skryptów python2 byłoby jawne użycie python2.
Peter Green
1
zamiast używać #!/usr/bin/python3(lub #!/usr/bin/python2) w skryptach, lepiej użyć (tylko dla Pythona), #!/usr/bin/env python3jeśli chcesz, aby był zdalnie przenośny. W przeważającej części jest to tylko dokumentacja, ponieważ w wielu przypadkach i tak zostanie wywołana za pomocą $ python3 your_pyprogram.py.
Michael
4
Zakładasz, że domyślny Python powinien być dostępny jako python. To założenie jest błędne.
W systemie, w którym Python 3 jest „wstępnie załadowany” i nie ma w ogóle Python 2, będzie tylko python3i nie python.
Kod napisany dla Python 3 powinien zawsze szukać interpretera o nazwie python3. Kod napisany dla Python 2 będzie historycznie szukał python.
Może nadejść moment, być może dziesięciolecia, w którym prawie nikt nie pamięta Python 2, kiedy pythonmoże zacząć się odnosić python3. Byłoby to wyłącznie dla wygody i można i nie powinno się tego robić przedwcześnie, jeśli w ogóle! Nie spieszy się z powodu następującego wpływu:
„Obecne stare” systemy nie będą miały żadnej wiedzy python2, tylko pythondlatego warto szukać kodu w Pythonie 2 python. To jest powód, dla którego pythonnależy odwoływać się do Python 2 „tak długo, jak istnieje kod Python 2”.
Nowy kod napisany dla Pythona 2, jeśli ma to sens, może doskonale szukać python. Może również szukać python2, jeśli jest przeznaczony do uruchamiania tylko na systemach świadomych i zadbanych w Pythonie 3 (które powinny oferować taki link).
Zaletą użycia kodu w Pythonie 2 python2jest to, że nie wymaga on dodatkowego dotykania, gdy pythonzacznie się odwoływać python3, co może się nigdy nie zdarzyć, lub gdy pythonw ogóle zniknie, co może się zdarzyć lub nie. (Może się to zdarzyć, jeśli kod Pythona 2 zginie po hipotetycznym Pythonie 4, który zyskuje popularność dzięki interpreterowi python4. - Ponieważ pozwolenie na wskazanie jednego python3lub python4obu byłoby mylące).
jak wpisać to samo polecenie i uzyskać 2 różne wyniki?
givonz
4
innym wyjściem od drugiego wywołania pythonjest użycie <tab>zapytania do autouzupełniacza, który następnie wypisuje możliwe permutacje python*i powoduje powrót do nowego monitu.
Andrew Keech
@ givonz, hmm, użyłem klucza TAB, bracie. nie jest produkowany. możliwy jest wzór binarny.
rɑːdʒɑ
Na co głosować negatywnie?
rɑːdʒɑ
2
Nie głosowałem negatywnie, ale myślę, że odpowiedź powinna wyjaśnić, dlaczego dwa pierwsze wyjścia są różne i jaka jest rola apt-cache, szczególnie dla początkujących Ubuntu.
AL
2
Python 3.x powinien działać z 16.04 - Właściwie to na pewno zadziała. Mam Ubuntu 14.04 i mam Python 3.4.3 - Wszystko, co musisz zrobić, aby go przetestować, to wpisz python3i powinien powiedzieć, którą wersję uruchamiasz.
Nie zadzwoniłbym za pomocą informatyki systemu operacyjnego. I ściśle mówiąc: Ubuntu to system operacyjny oparty na systemie Linux, a nie system uniksowy.
magu_
Muszę jeszcze zrozumieć różnicę między Linuksem a Unixem oprócz niektórych poleceń i inaczej, ale ściśle sformułowanych poleceń. chociaż gui jest znacznie bardziej zaawansowane niż to, co widzę w solaris.
Odpowiedzi:
Nie wiem, jakie „dokumenty” czytasz, ani co mówią, ale
/usr/bin/python
jest to tylko symboliczny link do domyślnej wersji Pythona, w tym przypadku 2.7, który jest wynikiem pisaniapython
na terminalu. Jest to wynik PEP 394, który to definiujetype python
ifile /usr/bin/python
potwierdzi to.Powodem tego innego układu niż konwencja jest to, że pakiet źródłowy python-defaults w Xenial to wersja 2.7.11 , więc dowiązanie symboliczne python wskazuje na tę wersję.
Aby użyć Pythona 3, musisz wyrazić się wyraźnie i wpisać
python3
w linii poleceń, co jest zalecane w przypadku, gdy potrzebujesz konkretnej wersji, możesz to również zrobić, wpisując Python 2python2
. Ubuntu domyślnie zawiera zarówno wersje Python 2, jak i 3 we wszystkich bieżących wersjach.Istnieją plany migracji wszystkiego do Pythona 3 i oznaczenia go jako domyślnego.
źródło
Aby uzyskać Python 3.5 REPL lub uruchomić zgodny skrypt, wpisz
python3
. Ma to na celu zachowanie zgodności ze wszystkimi starszymi wersjami Pythona 2.x (które zawsze były i pozostaną powiązanepython
).Myślnik może znaleźć,
python
jeśli skonfigurujesz.desktop
dla niego plik (in~/.local/share/applications/
), aby otworzyć terminal i na przykład uruchomić REPL. Nie ma domyślnego środowiska REPL GUI dla Pythona, a normalnym oczekiwaniem interfejsu jest to, że użytkownik pójdzie do terminala.Mówienie o domyślnym pythonie 3.5 to opiekunowie przenoszący wszystkie skrypty systemowe z python 2.x na python 3.x, nie że python 3 zastąpiłby python 2 we wszystkich przypadkach.
źródło
#!/usr/bin/python3
(lub#!/usr/bin/python2
) w skryptach, lepiej użyć (tylko dla Pythona),#!/usr/bin/env python3
jeśli chcesz, aby był zdalnie przenośny. W przeważającej części jest to tylko dokumentacja, ponieważ w wielu przypadkach i tak zostanie wywołana za pomocą$ python3 your_pyprogram.py
.Zakładasz, że domyślny Python powinien być dostępny jako
python
. To założenie jest błędne.W systemie, w którym Python 3 jest „wstępnie załadowany” i nie ma w ogóle Python 2, będzie tylko
python3
i niepython
.Kod napisany dla Python 3 powinien zawsze szukać interpretera o nazwie
python3
. Kod napisany dla Python 2 będzie historycznie szukałpython
.Może nadejść moment, być może dziesięciolecia, w którym prawie nikt nie pamięta Python 2, kiedy
python
może zacząć się odnosićpython3
. Byłoby to wyłącznie dla wygody i można i nie powinno się tego robić przedwcześnie, jeśli w ogóle! Nie spieszy się z powodu następującego wpływu:„Obecne stare” systemy nie będą miały żadnej wiedzy
python2
, tylkopython
dlatego warto szukać kodu w Pythonie 2python
. To jest powód, dla któregopython
należy odwoływać się do Python 2 „tak długo, jak istnieje kod Python 2”.Nowy kod napisany dla Pythona 2, jeśli ma to sens, może doskonale szukać
python
. Może również szukaćpython2
, jeśli jest przeznaczony do uruchamiania tylko na systemach świadomych i zadbanych w Pythonie 3 (które powinny oferować taki link).Zaletą użycia kodu w Pythonie 2
python2
jest to, że nie wymaga on dodatkowego dotykania, gdypython
zacznie się odwoływaćpython3
, co może się nigdy nie zdarzyć, lub gdypython
w ogóle zniknie, co może się zdarzyć lub nie. (Może się to zdarzyć, jeśli kod Pythona 2 zginie po hipotetycznym Pythonie 4, który zyskuje popularność dzięki interpreterowipython4
. - Ponieważ pozwolenie na wskazanie jednegopython3
lubpython4
obu byłoby mylące).źródło
Dostępne są wersje Python w wersji 2.x, 3.x. jeśli wywołasz Python tak, jak wskazuje na Python 2.x, załaduje Python 2.x
Poniższy obrazek pomoże ci.
źródło
python
jest użycie<tab>
zapytania do autouzupełniacza, który następnie wypisuje możliwe permutacjepython*
i powoduje powrót do nowego monitu.apt-cache
, szczególnie dla początkujących Ubuntu.Python 3.x powinien działać z 16.04 - Właściwie to na pewno zadziała. Mam Ubuntu 14.04 i mam Python 3.4.3 - Wszystko, co musisz zrobić, aby go przetestować, to wpisz
python3
i powinien powiedzieć, którą wersję uruchamiasz.źródło