Czy powinniśmy używać Pythona 2.6, 2.7 lub 3.x? [Zamknięte]

25

Wersja Pythona, której używam, to 2.6 , a istnieją wersje 2.7 i 3.x. Zwykle używam Pythona do jakiegoś trywialnego programu / fragmentu kodu. Zdaję sobie sprawę, że istnieją pewne zasadnicze różnice między 2.x a 3.x. Naprawdę chciałbym wiedzieć, czy mam zamiar zrobić większy projekt przy użyciu Pythona, której wersji Pythona powinienem użyć?

Czy powinienem dokonać aktualizacji do wersji 2.7, czy przejść do wersji 3.x, czy pozostać przy wersji 2.6?

Decyzja powinna opierać się na następujących warunkach:

  1. Liczba użytkowników w Internecie jako społeczności. Więcej użytkowników oznacza większy pakiet open source i pomoc od nich.

  2. Funkcjonalność

  3. Wsparcie oficjalnego zespołu programistów.

  4. Kompatybilność z istniejącym modułem / pakietem.

Dzięki!

lamwaiman1988
źródło
5
Czy ktoś może wskazać jakieś korzystne zmiany wprowadzone przez Python 3.x?
lamwaiman1988
1
Wspominasz, że wiesz, że kompatybilność z istniejącymi modułami stanowi problem, ale nie mów nam, na jakich istniejących modułach polega Twój kod. To pytanie jest prawie niemożliwe do odpowiedzi.
Wooble,
2
poza tematem; rekomendacje ORAZ goryl kontra rekin w jednym pytaniu wow!
3
To pytanie i odpowiedzi będą przydatne tylko przez krótki czas. To, co ma sens teraz, może nie mieć większego sensu za rok, ponieważ wersja 3.x staje się bardziej dojrzała.
Bryan Oakley,
Zwracając uwagę, że (a) pytanie jest nadal aktualne w 2014 r. (Np. RobotFramework nie działa z Pythonem 3) i (b) zamknięcie tego pytania powoduje, że ta strona jest nieaktualna, ponieważ - mimo że pojawia się wysoko w wynikach wyszukiwania Google - nowe odpowiedzi nie można opublikować.
Bob Stein,

Odpowiedzi:

27

Sam sugerowałbym Python 2.7. To najnowsze wydanie z serii Python 2.x. Większość modułów Python jest przystosowana do pracy z Python 2.x. Jest ruch, aby spróbować przejść do Pythona 3, ale każdy z modułów Pythona 3 jest napisany zarówno dla 2, jak i 3. Pamiętaj, aby nie używać starych funkcji, które nie są dostępne w Pythonie 3, abyś mógł tylko 2to3 kodować uruchom go w Pythonie 3.

Jeśli korzystasz z Python 3, jesteś jednym z pierwszych użytkowników i prawdopodobnie będziesz musiał powiedzieć innym, aby pobrali Python 3 (wiele komputerów będzie miało tylko Python 2). Z drugiej strony, nowe funkcje pojawią się tylko w Pythonie 3. Python 2 jest stale utrzymywany. Nie sugerowałbym więc używania Python 2 za 10 lat.

Jeśli chcesz mieć oko na pakiety Python i ich kompatybilność z Python 3, możesz mieć oko na tej stronie: http://python3wos.appspot.com/

jsternberg
źródło
django nie obsługuje 3.x? Więc użytkownik zaznajomiony z django po prostu nie może używać 3.x?
lamwaiman1988
hej normalnie, kiedy nowa wersja zostaje wydana, oznacza to, że jest lepsza niż wcześniejsza. I dlaczego python pojawia się w serii 2.x i kolejnej w serii 3.x? Jaka jest w nich rzeczywista różnica.
GORĄCY
4
Python 3 wprowadził pewne zmiany w języku, które są korzystne, ale nie są wstecznie kompatybilne z niektórymi funkcjami Python 2. Więc niektóre rzeczy zostały usunięte, a niektóre dodane (a usunięte rzeczy powodują, że nie są kompatybilne).
jsternberg
+1 za 2,7, najlepszy stosunek kompatybilności (przynajmniej dla bibliotek, których używam), aż 3 będzie bardziej rozpowszechniony
wildpeaks
@Ashinkn Zmiany można znaleźć tutaj docs.python.org/3.0/whatsnew/3.0.html . Główną zmianą przerywającą zgodność jest przejście z używania Unicode (w przeciwieństwie do ASCII) jako domyślnego typu łańcucha. Tam, gdzie ludzie używali ciągów jako bajtów [], zanim pojawił się nowy typ bajtek. Ponadto wszelkie 2x łańcuchy jawnie zdefiniowane jako Unicode muszą zostać zmienione na zwykłe łańcuchy.
Evan Plaice
19

Moim zdaniem musimy zacząć przekonywać ludzi do Pythona 3, a jeśli istnieją biblioteki, które nie są kompatybilne z Pythonem 3, musimy zacząć to robić.

Python 3 to przyszłość języka, a im więcej kodu piszemy za jego pomocą, tym lepiej.

Musaab
źródło
Czego potrzebujemy to pojedynczy tłumacza, który jest kompatybilny z obiema wersjami Pythona i inteligentnie można je analizować. Oznacza to, że wspomniany interpreter skompiluje zarówno python2, jak i python3 do tego samego kodu bajtowego, aby były one kompatybilne, umożliwiając użycie python3 z biblioteką python2. Jeśli C, C ++ i Java mogą to zrobić, to również Python.
Braden Best
4

Django teraz „eksperymentalnie” obsługuje Python 3.2+, jak widać z ich postów tutaj .

Biorąc pod uwagę to i fakt, że Python 3.x jest przyszłością języka, powiedziałbym, że Python 3 jest teraz najlepszy.

CorayThan
źródło
2

Dla każdego projektu sprawdź, czy wszystkie biblioteki wymagane dla projektu mają już wsparcie dla Pythona w wersji 3.x, a następnie użyj python 3.x, ponieważ jest to przyszłość i jest to ostatnia oficjalna stabilna wersja.

W przeciwnym razie używaj wszystkiego, czego potrzebujesz do kompatybilności bibliotek.

cnd
źródło
2

Tak naprawdę nie ma znaczenia, czy używasz Python 2.7, czy Python 3 Jeśli nie używasz starych funkcji w Python 2.7, możesz po prostu 2 do 3 kodu, aby uruchomić go w Python 3.

Ramchandra Apte
źródło
0

Byłem wcześniej na tej samej łodzi i właśnie to znalazłem. Python 2.6, 2.7 i 3.2 mogą być instalowane obok siebie za pomocą MacPorts i mogą być łatwo przełączane. (Jestem użytkownikiem Maca). Poszukaj alternatyw dla Macports dla swojej platformy.

ThinkCode
źródło
0

Dopóki most nie zostanie opracowany wewnętrznie w wersji 3.x, aby umożliwić przejrzyste korzystanie z pakietów 2.7, ruch jest obarczony niebezpieczeństwem, ponieważ w języku naprawdę chodzi o to, co zostało do niego wniesione. Porównania formalne i czystość są nieistotne. Taki przezroczysty most najprawdopodobniej nie powstanie z powodu zwykłego pedantycznego uporu i lekceważenia bazy użytkowników.

Don Gateley
źródło
Taki przezroczysty most jest nieosiągalny. Pakiety 2to3 i sześć zapewniają duże możliwości łączenia, ale dalekie są od przezroczystości.
Martijn Pieters