Aktualizacja Pythona w systemie Ubuntu

78

Chcę zaktualizować kompilację Pythona na moim Linux-ie, ale jedynym sposobem, w jaki wiem, jak to zrobić, jest odinstalowanie bieżącej wersji i zainstalowanie nowej. Mój system jest już aktualny (zaktualizowałem wczoraj). Chciałem wiedzieć, czy istnieje sposób na aktualizację określonego programu z wiersza poleceń, na przykład sudo apt-get update <program-name>. Wiem, że to polecenie nie istnieje, ale mam nadzieję, że coś równoważnego.

Wydajność Issliss
źródło
Jeśli twój system jest aktualny, to Python w twoim systemie (zgodnie z twoimi repozytoriami). Czy się mylę?
cyr

Odpowiedzi:

64

Jak już zauważyli inni, bare sudo apt-get install packagezainstaluje najnowszą dostępną wersję, w razie potrzeby zastępując starszą.

Jednak w przypadku niektórych programów (w tym Pythona) sytuacja wygląda nieco inaczej. Niektóre główne, bardzo i niekompatybilnie różne wersje otrzymują własne pakiety. Na przykład, Python 2.6 , Python 2.7 , Python 3.1 wszystkie działają w osobnych pakietach na Ubuntu.

Szczególnie ważny jest fakt, że jedną z zasad Ubuntu jest intensywne używanie Pythona do pisania oprogramowania dla użytkowników końcowych. W rzeczywistości dość duża część systemu jest napisana w języku Python. W tej chwili kod działa w Pythonie 2.6 - więc ta wersja jest domyślna podczas instalacji; a kod nie będzie łatwo działał, powiedzmy, w Pythonie 2.7 - ponieważ istnieją niezgodności. Aby przełączyć system na Python 2.7, należy wykonać pracę polegającą na aktualizacji i ponownym przetestowaniu wszystkich skryptów. Nie da się tego łatwo zrobić; oznacza to, że nie można po prostu „przełączyć” systemu na Python 2.7 i usunąć starszą wersję.

Ale. Jeśli nie zależy ci na wymyślnych narzędziach swojego systemu i potrzebujesz tylko nowego Pythona - nie widzę przeszkód. Idź i sudo apt-get install python3koduj dzielnie dla 3.x Pythona; pamiętaj tylko, aby uruchamiać skrypty python3i używać #!/usr/bin/env python3linii shebang.

ulidtko
źródło
6
Bardzo szczegółowe informacje na temat działań poza sceną.
Wydajność
16
sudo apt-get install python 3.3.3

dotyczy to Pythona (3.3.3) dla różnych wersji należy użyć odpowiedniego numeru wersji.

Mrinal
źródło
4
Myślę, że przestrzeń między Pythonem a wersją nie powinna istnieć. sudo apt-get install python3.6działało dla mnie, ale nie wpływa w żaden sposób na Python 3.5.
GUI Junkie
sudo apt-get install python 3.6.1 > Note, selecting 'libghc-unix-time-dev-0.3.6-1b8cf' for regex '3.6.1' ... Oddzielne argumenty mówią aptowi, aby zainstalował wiele pakietów
Clancy Hood
3
Po zainstalowaniu mój numer wersji python jest taki sam? Co może być przyczyną?
Ramesh Pareek
Użyłem tej metody, ale nie mogę znaleźć, gdzie została zainstalowana (tj. Jak otworzyć powłokę 3.7). @RameshPareek to może być również twój problem. nie wydaje się być w / usr / bin. python is already the newest version (2.7.12-1~16.04). python set to manually installed.jakieś pomysły?
Fan Bjorks numer jeden
10
sudo apt-get install python3.6

Spowoduje to zainstalowanie Pythona 3 w systemie Linux obok bocznego Pythona 2. Aby uzyskać dostęp do Pythona 3, wejdź po otwarciu terminala.

python3
G-Ox7cd
źródło
2
To powiela inną odpowiedź i nie dodaje żadnej nowej treści. Nie publikuj odpowiedzi, chyba że masz coś nowego do dodania.
DavidPostill
3
przepraszam, chciałem tylko napisać polecenie, aby uzyskać nowe.
G-Ox7cd
6
Jeśli uruchomię, to dostanęE: Unable to locate package python3.6 E: Couldn't find any package by glob 'python3.6' E: Couldn't find any package by regex 'python3.6'
Kajsa
1
sudo add-apt-repository ppa: deadsnakes / ppa -y && sudo apt-get update
ski_squaw
E: Unable to locate package python3.6
Przerywa
4

Zbliżasz się do myślenia o poleceniu podobnym sudo apt-get update(które jest rzeczywistym poleceniem, ale nie robi tego, co chcesz).

Aby zaktualizować Python i wszystko, co zainstalowałeś, po prostu wykonaj polecenie:

sudo apt-get upgrade
Wuffers
źródło
Dzięki, ale już wiedziałem o poleceniu aktualizacji, dlatego opublikowałem fakt, że mój system jest już aktualny. Miałem nadzieję znaleźć polecenie, które może być ukierunkowane na określone aplikacje.
wydajność
apt nie zaktualizowałby niczego na bieżąco, więc nie miałoby to znaczenia; p
Journeyman Geek
OP chce konkretnie zaktualizować Pythona . Mówienie im, aby zaktualizowali wszystkie pakiety, które mają, jest leniwą i złą radą.
Przemek D
3

Z naszej siostrzanej strony: https://askubuntu.com/questions/44122/how-to-upgrade-a-single-package-using-apt-get

Każde z tych poleceń aktualizuje się, instalując, co w wielu przypadkach powinno działać dobrze, ale może nie być tym, czego szukasz w konkretnym przypadku.

Jeśli chcesz tylko zaktualizować konkretny pakiet ORAZ tylko wtedy, gdy jest już zainstalowany, użyj polecenia:

sudo apt-get install --only-upgrade packagename
music2myear
źródło
3

Jeśli chcesz zaktualizować tylko niewielką wersję pakietu Python, np. 2.7.11+ t0 2.7.12, zrób sudo apt-get install python2.7to dla ciebie

Senthil Kumar Vaithiyanathan
źródło
2

pyenv może być dla Ciebie dobrą opcją: https://github.com/yyuu/pyenv


W odniesieniu do odpowiedzi @ ulidtko , możliwą alternatywą dla całkowitego zastąpienia systemowego pytona może być użycie izolowanego środowiska z żądaną wersją Pythona. Jest to podobne do „środowiska wirtualnego”, ale dotyczy samego pythona. Użyłem tego w przeszłości dla starszych projektów, które działają na Pythonie 2.6, a także podczas aktualizacji ze starszej wersji Pythona do Pythona3.

ładnie
źródło
Nie znam tego obszaru, ale czy mógłbyś wyjaśnić, w jaki sposób rozwiązuje to pytanie i rozwiązuje problem?
Ben N
1
W odniesieniu do odpowiedzi @ ulidtko ( superuser.com/a/241903/152143 ), możliwą alternatywą dla całkowitego zastąpienia systemowego pytona może być użycie izolowanego środowiska z żądaną wersją Pythona. Jest to podobne do „środowiska wirtualnego”, ale dotyczy samego pythona. Użyłem tego w przeszłości dla starszych projektów, które działają na Pythonie 2.6, a także podczas aktualizacji ze starszej wersji Pythona do Pythona3.
nicefinly
1
apt-get install python

Uważam, że to powinno zadziałać. Musisz oczywiście zmienić „python”, aby oczywiście pasował do odpowiedniej nazwy pakietu w repozytorium.

mbreedlove
źródło
1

Jak wszyscy wiemy, że Python jest dostarczany z wersją 3.5. Tak więc bardzo łatwo jest zaktualizować Python 2.7 (który jest domyślnie obecny w Ubuntu 16.04) do Python 3.5.

Wykonaj następujące kroki:

  1. Otwórz terminal.
  2. Zostań użytkownikiem root za pomocą polecenia sudo.
  3. Użyj poniższego kodu, aby zaktualizować Python 2.7 do 3.5

    sudo apt-get install python3.5

  4. Zostaniesz poproszony o zgodę, a następnie Daj opcję Y.

  5. Poczekaj na zakończenie procesu.
  6. wyczyść ekran za pomocą polecenia clear
  7. Sprawdź wersję Pythona za pomocą poniższego polecenia.

    Python -version

Big Data Guy
źródło
1
W przyszłości używaj właściwego formatowania i trzymaj się z dala od stwierdzeń typu „Mam nadzieję, że ci to pomoże”. to tylko hałas. Odpowiadając na pytanie, zakłada się, że próbujesz odpowiedzieć na pytanie za pomocą czegoś, co jest pomocne. Powinieneś przejrzeć swoją odpowiedź i naprawić drobne błędy gramatyczne, których nie naprawiłem, i dostarczyć zrzuty ekranu z procesu. Tym razem poprawiłem formatowanie, nie będę tego więcej robić, mocno wierzę, że autorzy powinni się przekonać do poprawiania własnych odpowiedzi i pytań.
Ramhound,
I to nie jest takie proste, to nie aktualizuje właściwie dowiązań symbolicznych, więc kończy się to 3.4 i 3.5 obok siebie. Python2 i tak jest generalnie obok Python3, nie aktualizujemy Python2 do Python3, migrujemy naszą pracę.
mckenzm
0

W jednym przypadku, w którym korzystasz z wersji LTS, twój python może być opóźniony przez mniejszą wersję, powiedzmy 2.7.5 zamiast 2.7.10.

Jedną z możliwości może być aktualizacja systemu :

  • ustawiony prompt=normalw/etc/update-manager/release-upgrades
  • zaktualizuj system
    • w wierszu polecenia możesz wpisać sudo do-release-upgradepolecenie, aby menedżer aktualizacji wykonał zadanie aktualizacji do najnowszej (= nie LTS) wersji.
    • rozwiązanie GUI korzysta z Menedżera aktualizacji

Jak zawsze podczas aktualizacji , zapoznaj się z uwagami do wydania , ponieważ aktualizacja może w niektórych przypadkach uszkodzić twój system, patrz komentarz @ Gino .

serv-inc
źródło
Koleś, próbowałem twojej zmiany i złamała mój system Ubuntu 14.04! Zasadniczo próbował zaktualizować z 14.04 do Ubuntu 15 i nie był w stanie tego zrobić pomyślnie, pozostawiając mój system w połowie stanu, w którym logowanie graficzne już nie działało - np. Zalogowałbym się za pomocą logowania graficznego i kopnął wróciłem do tego samego graficznego loginu. Właśnie spędziłem ostatnią godzinę + ponownie instalując Ubuntu 14.04 na moim komputerze, aby naprawić zerwanie rzekomego rozwiązania .
Gino,
@Gino: Dziękujemy za opinię. Czy masz już askubuntu.com/questions/612973/... , askubuntu.com/questions/223501/... i informacje o wersji? Wystąpił problem ze „sterownikiem fglrx AMD”. Czy potrzebujesz innej pomocy?
serv-inc,
Myślę, że twoja sugestia, aby obejść normalne kontrole bezpieczeństwa, a tym samym umożliwić aktualizację do wersji innej niż LTS, jest pełna niebezpieczeństw. Do dziś nie wiem, dlaczego aktualizacja się nie udała, ponieważ nie wyświetlała żadnych komunikatów o błędach, które można zdiagnozować. Zamiast tego skończyłem z systemem, który nie był już użyteczny. Jeśli dobrze pamiętam, w końcu uruchomiłem ponownie instalację Ubuntu z pewnymi ustawieniami, które były w stanie przywrócić większość mojego systemu. I na marginesie, jestem profesjonalnym programistą, więc ogólnie wiem, jak sobie radzić z systemem Linux.
Gino
@Gino: Wydaje się, że jest to standardowa procedura przejścia z LTS na inne niż LTS. To „[zmienia] poziom świadomości nowych wydań. Można ustawić to na „obsługiwane” (zwykłe) wersje, „tylko długoterminowe” (LTS), a nawet „nic” (bez większych aktualizacji). ”„ Cytat patrz askubuntu.com/questions/240160/… . Używa on menedżera aktualizacji systemu. Niestety, w twoim przypadku (domyślna) aktualizacja nie działała, co może być spowodowane błędnym sterownikiem grafiki (patrz linki powyżej)
serv-inc