Pytanie:
Czy potrzebujemy wielu wersji Pythona?
SteveIrwin
2012-10-10 03:06:10 UTC
view on stackexchange narkive permalink

Jestem nowy w Linuksie i przeglądając mój zainstalowany folder, widzę, że na liście katalogów są cztery różne foldery Pythona.

pythonpython2.7python3python3.2

Czy potrzebujemy wszystkich czterech wersji, czy powinienem usunąć pozostałe i zachować tylko najnowszą?

Również starsze wersje nie są automatycznie usuwane po zainstalowaniu nowszych wersji, tak jak w systemie Windows?

Jaka dystrybucja i jaka jest ścieżka? Niektóre aplikacje nadal zależą od `python2.7`, więc zachowaj ostrożność podczas usuwania tego.
Używam Debiana, a ścieżka to / etc
`/ etc` nie jest ścieżką instalacyjną dla aplikacji. Tam jest przechowywana konfiguracja. Nie zadzieraj z tym, co tam jest.
Jednym z powodów wielu wersji jest to, że wersja 3 wprowadziła pewne zmiany niezgodne z poprzednimi wersjami i zepsuła niektóre istniejące funkcje.
Chcę go usunąć, ponieważ zajmuje dużo miejsca na kartach SD i kopiach zapasowych. Któregoś dnia skonfiguruję system ofiarny i usunę go tylko po to, aby zobaczyć różnicę w wykorzystaniu przestrzeni i czy cokolwiek zepsuje.
@SDsolar Niszczy rzeczy; możesz zobaczyć co, uruchamiając `aptitude` i wykonując (symulowane!) usuwanie, znajdując` python` i naciskając `--`.
Cztery odpowiedzi:
#1
+8
scruss
2012-10-10 05:03:12 UTC
view on stackexchange narkive permalink

Jeśli zajrzysz do / usr / bin , w rzeczywistości są zainstalowane tylko dwie wersje:

  $ ls -la / usr / bin / python * lrwxrwxrwx 1 root root 9 5 czerwca 23:08 / usr / bin / python -> python2.7-rwxr-xr-x 1 root root 2679344 6 maja 19:31 /usr/bin/python2.7lrwxrwxrwx 1 root root 9 2 sierpnia 18: 04 / usr / bin / python3 -> python3.2lrwxrwxrwx 1 root root 11 6 lipca 09:52 /usr/bin/python3.2 -> python3.2mu-rwxr-xr-x 1 root root 2612900 6 lipca 09:52 / usr / bin / python3.2mulrwxrwxrwx 1 root root 11 sierpnia 2 18:04 / usr / bin / python3mu -> python3.2mu  

Wpisy oznaczone l na początku to linki; są one tylko wskazówkami do plików wykonywalnych.

Jak już powiedziano, potrzebujesz obu wersji i nie mieszaj w nich rzeczy ...

Co to jest `mu` w` python3.2mu`?
@AlexChamberlain - Według [pep-3149] (http://www.python.org/dev/peps/pep-3149/), `m` pokazuje, że został skompilowany z flagą` --with-pymalloc`, podczas gdy „u” wskazuje, że został skompilowany z flagą „--with-wide-unicode”.
@scruss - Dla kompletności możesz wspomnieć, że wpisy `l` to [dowiązania symboliczne] (http://en.wikipedia.org/wiki/Symbolic_link).
@MarkBooth, tak, powiedziałem to w oryginalnej odpowiedzi
Nie, oryginalna odpowiedź 10 października 2012 o godzinie 0:03, mój komentarz był o 9:37, a Twoja zmiana o 11:33. Mogłeś po prostu oznaczyć mój komentarz jako przestarzały.
#2
+3
Krzysztof Adamski
2012-10-10 11:00:54 UTC
view on stackexchange narkive permalink

Python 3 jest wsteczną niekompatybilną aktualizacją języka. Jak już wspomniano, zmieniono tak wiele, że większość programów nie będzie działać w Pythonie 3 bez modyfikacji. Co gorsza, wiele bibliotek Pythona nie jest jeszcze zgodnych z Pythonem 3.

Dlatego potrzebne są co najmniej dwie wersje - starszy Python 2.x i nowy Python 3.x. To jest dokładnie to, co masz w systemach Debian. Masz 4 różne ścieżki, których możesz użyć do uruchomienia Pythona:

  • python2.7 - to wersja 2.7 Pythona, najnowsza wersja linii 2.x.
  • python3.2 - to wersja 3.2 Pythona, najnowsza wersja linii 3.x dostępna w Debianie (3.3 nie jest jeszcze dostępna).
  • python - to domyślny interpreter języka Python. Jest to symboliczne dowiązanie do jakiejś wersji uważanej za domyślną. Obecnie - w Debianie - nadal jest to Python 2, więc wskazuje na 2.7.
  • python3 - jest to najbardziej aktualny interpreter Pythona 3 dostępny w Debianie. Obecnie jest to link symboliczny do wersji 3.2 interpretera.

Wnioski

Wiele pakietów zależy od Pythona 2.x, więc nie powinieneś go usuwać. Mogą istnieć pakiety, które zależą od Pythona 3.x, więc prawdopodobnie również nie chcesz usuwać tego.

Wiem, że to prawda w przypadku Pythona 2.7, ale nie jestem świadomy niczego, co zawiedzie, jeśli Python 3 zostanie usunięty. Czuję, że zbliża się eksperyment. Jeśli to możliwe, dobrze byłoby mieć mniejsze pełne kopie zapasowe rsync.
#3
+2
John La Rooy
2012-10-10 07:27:13 UTC
view on stackexchange narkive permalink

Python3 nie jest tak naprawdę aktualizacją Pythona2. Tylko trywialne programy będą działać bez przechodzenia przynajmniej przez 2to3.

Z drugiej strony, gdy są drobne aktualizacje, np. 2.7.2 -> 2.7.3, 2.7 zostanie zaktualizowany do nowej wersji i starszy zostanie usunięty. Jest to ogólnie w porządku, ponieważ nie powinno być zmian wstecznie niekompatybilnych (nie powiem, że to się nigdy nie wydarzyło)

Zwykle nie zobaczysz, że 3.3 jest dodawany do repozytorium między wydaniami, ale kiedy się pojawi i zaktualizujesz, 3.2 pozostanie zainstalowany na wypadek, gdybyś polegał na tej konkretnej wersji. Czysty kod Pythona, który działa na 3.2, powinien działać w większości dobrze na 3.3, ale biblioteki C mogą nie działać bez przebudowy.

#4
  0
SDsolar
2017-08-17 05:48:56 UTC
view on stackexchange narkive permalink

Odpowiedź na ostatnią część pytania: „Również starsze wersje nie są usuwane automatycznie po zainstalowaniu nowszych wersji, tak jak w systemie Windows?”

Odpowiedź jest jasna i dobitna: Nie.

Starsze wersje nie są usuwane po zainstalowaniu nowych wersji.

Zbyt duża część naszego ekosystemu oprogramowania została zbudowana w oparciu o Python 2.x, aby można go było wykorzystać. Usunięcie go złamałoby wiele naszych poleceń.

Poza tym Python 3 oferuje niewiele, co byłoby atrakcyjne dla programisty Pythona 2.7. Jeśli uznasz, że potrzebujesz tych funkcji, możesz użyć Python3. Jeśli nie, ludzie tacy jak ja pozostaną przy Pythonie 2.x

Jak wspomniano w innych odpowiedziach, nie są już tym samym językiem.

Jest to jak różnica między programami, które mogą działać w systemie Windows 98, ale nie mogą działać w systemie Windows 2000. Programy, których używałeś pod Win98, musiały zostać ponownie wydane po skompilowaniu dla 2000 ( 32-bitowy). Windows 2000 nie przyjął się na rynku konsumenckim, ponieważ spowodowałby, że konsumenci musieliby ponownie kupować swoje ulubione produkty. Dopiero w systemie Windows XP w końcu udało się to, aby programy obu typów mogły działać w tym samym systemie operacyjnym Windows. Mamy szczęście, że Microsoft wyciągnął wnioski z tej lekcji i że programy 32-bitowe i 64-bitowe można uruchamiać w każdej nowoczesnej wersji systemu Windows.

Wracając do pytania w tytule, „Czy potrzebujemy wielu wersji Pythona?” - zależy to od oprogramowania, którego chcesz używać. Jednym z wyróżniających się przykładów jest sprzęt do latania. Bez Pythona3 nie będzie działać.



To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 3.0, w ramach której jest rozpowszechniana.
Loading...