Czy powinienem zmienić kod Python, jeśli zaktualizuję system Ubuntu?

11

Mam oprogramowanie, które rozwijam w Pythonie 3 od lat. Do dzisiaj korzystałem z Ubuntu Desktop 11.04, ale teraz chcę przejść na wyższą wersję Ubuntu.

Czy muszę pozostać na Ubuntu 11.04, aby nie musiałem zmieniać części kodu źródłowego mojego oprogramowania z powodu nowych zmian w wyższych wersjach Ubuntu?

Czy najnowsza wersja Ubuntu nie wpłynie w żaden sposób na moje oprogramowanie?

Sylvain Pineau
źródło
18
To naprawdę nie jest dla mnie oczywiste: zaktualizuj do 14.04, jeśli coś jest zepsute w twoim oprogramowaniu: napraw to. Jest to doskonałe ćwiczenie, aby uniknąć zgnilizny oprogramowania. Typ problemu, jaki możesz znaleźć, dotyczy zależności. Możesz je wcześniej przetestować w virtualenv.
don.joey
6
@begueradj Nie chcę zminimalizować wysiłku, który trzeba podjąć, ani nie unieważnić twoich powodów. Po prostu: włożycie w to wysiłek, albo wasze oprogramowanie naprawdę nie będzie trwać bardzo długo. Możesz uaktualnić do 12.04, ale pozostawanie w wersji EOL jest problematyczne. A problem sam nie zniknie ...
don.joey
5
@begueradj - edytuj pytanie i podaj szczegółowe informacje o swoim oprogramowaniu. Opisz, co robi. Opisz, jakiego zestawu narzędzi używasz (np. GTK? QT?). Opisz, na jakim oprogramowaniu strony trzeciej zależy (np. Konkretna wersja firefox? Webkit?). Opisz zależności oprogramowania do zbudowania oprogramowania. Bez powyższych informacji nie otrzymasz konkretnej odpowiedzi na swoje pytanie. Otrzymasz tylko ogólną odpowiedź, tak jak obecnie.
fossfreedom
3
11.04 osiągnął koniec życia półtora roku temu. Powinieneś już dawno dokonać aktualizacji.
psusi

Odpowiedzi:

3

Na podstawie twoich komentarzy pomyślnie przetestowałeś swoje oprogramowanie na maszynach wirtualnych, co jest dobrą wiadomością.

Ale jako twórca aplikacji musisz być przygotowany na dostosowanie kodu do nowszych wersji, w przeciwnym razie zostanie on szybko porzucony.

Teraz, aby upewnić się, że będzie nadal działać z nowymi wersjami Ubuntu, gorąco zachęcam do zachowania go jako pakietu i zapewnienia kompletnego pakietu testowego dla twojej aplikacji oraz do wywołania go podczas procesu budowania pakietu (np. Poprzez wywołanie setup.py testw debian/rules override_dh_auto_testsekcji ).

Możesz łatwo skonfigurować codzienne kompilacje pakietu w ppa, używając przepisu bzr-buildera . W ten sposób będziesz informowany o wszystkich błędach kompilacji spowodowanych przez nowe wersje oprogramowania lub zepsute zależności.

Nowe wersje są zwykle dostępne do opracowania kilka dni po oficjalnym ogłoszeniu. Spójrz na naszą stronę ppa , Utopic jest teraz częścią serii dystrybucji, dla której budujemy:

wprowadź opis zdjęcia tutaj

Sylvain Pineau
źródło
3
Dlaczego masz 2 odpowiedzi na to samo pytanie? Ponadto autopkgtest nie działa w ten sposób. I w jaki sposób odpowiada to na pytanie lepiej lub bardziej precyzyjnie niż na inne pytania?
dobey
Opublikowałem drugą odpowiedź w okresie nagrody. Tym razem skoncentrujemy się na tym, jak uniknąć problemów z aktualizacją, mając nadzieję, że przyniesie to, czego OP naprawdę się spodziewał (ponieważ na podstawie jego komentarza wiedziałem, że jego aplikacja działa poprawnie z 14.04)
Sylvain Pineau,
Polecam zadać kolejne pytanie, aby podać odpowiedź. BTW, naprawiłbym część autopgktest. @dobey ma rację, to nie działa w ten sposób.
Braiam
@dobey autopkgtest naprawiony / usunięty z mojej odpowiedzi.
Sylvain Pineau,
@Braiam autopkgtest naprawiony / usunięty z mojej odpowiedzi
Sylvain Pineau
13

Nie, nie powinieneś zostać 11.04. Wsparcie jest już dostępne pod koniec życia. Jeśli chcesz uzyskać jakiekolwiek wsparcie, musisz je uaktualnić, co najmniej do 12.04 (będzie ono obsługiwane przez kolejne trzy lata).

Ponadto, nawet nowsze wersje Ubuntu domyślnie zawierają Python 3.x, w celu całkowitego usunięcia Python 2.x z domyślnej instalacji.

Państwo może mieć problemy z uruchomieniem kodu pod nowszej wersji Pythona 3.x, ale w ogóle powinien mieć żadnych problemów. Jako deweloper powinieneś być przygotowany na wszelkie takie problemy, niezależnie od wersji Ubuntu. Każda używana biblioteka lub sam Python może zawierać błąd, od którego zależy twój kod behawioralny, a jeśli ten błąd zostanie naprawiony, może powodować, że Twój program będzie się zachowywał inaczej niż się spodziewałeś.

dobey
źródło
11

Trudno podać ostateczną odpowiedź bez opisu swojej aplikacji. Ponieważ używasz Python3, przynajmniej nie jesteś ograniczony przez gałąź Python2.x (nie będzie Python 2.8).

Teraz kilka ostrzeżeń, które mogą mieć zastosowanie do twojej aplikacji, w Python3 wiele pakietów jest obecnie nieaktualnych tylko dlatego, że najlepszym sposobem na dostęp do GLib / GObject / GIO / GTK + jest użycie Python GObject Introspection (inaczej PyGI).

Wreszcie, wciąż istnieją drobne różnice między różnymi wersjami Pythona (np. Argparse nie zachowuje się dokładnie tak samo z Pythonem 3.2 i 3.3.

Jedną z rzeczy, które możesz wypróbować, jest uruchomienie maszyny wirtualnej 14.04 i przetestowanie kodu za pomocą python3.4.

Sylvain Pineau
źródło
Nie zmienię wersji Pythona (jest to niemożliwe), bardziej martwię się, jak nowa wersja Ubuntu może wpłynąć na kod źródłowy mojego oprogramowania.
Którą wersję oficjalnie obsługujecie, 3.2?
Sylvain Pineau
Używam wersji 3.1.3
Zachęcam do przetestowania aplikacji za pomocą python3.2 (uruchom maszynę wirtualną 12.04 i sudo apt-get install python3). Możesz także sprawdzić informację o wydaniu python3.2, ale o ile wiem, python3.2 to tylko mnóstwo ulepszeń w stosunku do gałęzi 3.1.x (argparse był jednym z nich)
Sylvain Pineau
1
W przypadku programów w języku Python3 zaktualizowane wersje języka Python zapewniają jeszcze bardziej wydajne sposoby wykonywania złożonych zadań. Na przykład Python3.4 wprowadza asyncio i pozwoli mi pozbyć się naprawdę skomplikowanych problemów z mainloopem / wątkiem glib. Dodałem notatkę o argparse, ponieważ byłem uwięziony w ostatnich zmianach, ale to nie jest wielka sprawa. Więc ponownie przetestuj swój sw z najnowszymi wersjami (3.2, a następnie 3.4 z 14.04), ale podobnie jak inni użytkownicy twierdzą, że nie powinieneś napotykać poważnych problemów
Sylvain Pineau
2

Zależy to od Twojego kodu. Jeśli Twój kod korzysta z bibliotek, które nie są obsługiwane, nie możesz łatwo migrować do nowszej wersji systemu operacyjnego, ale przez większość czasu nie wystąpi żaden problem.

Ocean
źródło
czy możesz mi wyjaśnić, dlaczego biblioteka Python zależy od danej wersji Ubuntu?
@begueradj Nie działa, ale jeśli używasz biblioteki Pythona, która nie jest już utrzymywana, mogła zostać usunięta z archiwum Ubuntu w pewnym momencie, a zatem nie jest dostępna w nowszej wersji. Twój kod się wtedy nie powiedzie. Możesz oczywiście zainstalować pakiet biblioteki ze starszej wersji Ubuntu lub ze źródła, aby rozwiązać problem, choć nie otrzymasz żadnych aktualizacji; lub możesz naprawić kod, aby użyć innej biblioteki lub napisać własny kod, aby wykonywać te same funkcje.
dobey,
jak powiedział @dobey, niektóre biblioteki nie są już utrzymywane lub jego nowsza wersja nie działa wstecz. W przeszłości miałem problemy z Turbogears, kiedy aktualizowałem do nowszej wersji Ubuntu.
Ocean,
0

Ubuntu 14.04 ma pakiety python3, więc to nie jest problem. apt-cache search python3pokaże ci je. Poza tym będziesz musiał przeczytać informacje o wersji dla każdej wersji Ubuntu między 11.04 a „wyższą wersją” i poszukać zmiany, która zepsuje twoją aplikację. Niewiedza o twoim rozwoju wymaga ode mnie wykrzyczenia YMMV, ale zgaduję, że nie będziesz mieć problemów nie do pokonania.

waltinator
źródło
0

Jeśli chcesz uruchomić starą wersję Pythona na Ubuntu 14.04, włącz repozytorium deadsnakes . Ma wersje Python 2.3, 2.4, 2.5, 2.6, 3.1, 3.2, 3.3 dla Ubuntu 14.04. Jeśli twoja aplikacja jest czystym kodem Python i nie zależy od zachowania innych procesów, powinna działać poprawnie pod starym interpreterem.

bain
źródło
0

Inną odpowiedzią jest użycie środowiska wirtualnego, jeśli masz jakiś problem, lub możesz użyć tej samej wersji Pythona 11.04 (pobierz i skompiluj) w 14.04.

Ocean
źródło
Z pewnością mogę testować na maszynach wirtualnych (zrobiłem to), moje oprogramowanie działa dobrze ... na razie ... ale nie mam pojęcia, czy później wystąpi błąd z powodu nowej wersji Ubuntu.
1
Ponieważ Ubuntu 14.04 jest wersją LTS i bazuje na ich filozofii, nie zmienią wersji (bomba na głównej wersji) i konfiguracji, myślę, że nie powinieneś mieć żadnego problemu.
Ocean