UbuntuシステムでPythonを更新する


78

LinuxボックスでPythonビルドを更新したいのですが、その方法を知っている唯一の方法は、現在のバージョンをアンインストールして新しいバージョンをインストールすることです。私のシステムはすでに最新です(昨日更新しました)。コマンドラインから特定のプログラムを更新する方法があるかどうかを知りたかったのsudo apt-get update <program-name>です。私はこのコマンドが存在しないことを知っていますが、同等のものが存在することを望んでいます。


システムが最新の場合は、システムのPythonも(リポジトリに従って)最新です。私が間違っている?
cYrus

回答:


64

他の人が既に述べたように、bare sudo apt-get install packageは利用可能な最新バージョンをインストールし、必要に応じて古いバージョンを置き換えます。

ただし、一部のソフトウェア(Pythonの場合)では、状況が多少異なります。いくつかの主要な、非常に互換性のないバージョンは、独自のパッケージを取得ます。たとえば、Python 2.6Python 2.7Python 3.1はすべて、Ubuntuの個別のパッケージに含まれています。

特に重要なのは、Ubuntuのポリシーの1つが、エンドユーザーソフトウェアの作成にPythonを広く使用することであるという事実です。実際、システムのかなりの部分はPython 書かれています。現時点では、コードはPython 2.6で実行されます。したがって、このバージョンはインストール時のデフォルトです。また、非互換性が存在するため、たとえばPython 2.7ではコード簡単に実行できません。システムをPython 2.7に切り替えるには、すべてのスクリプトの更新と再テストから成る作業を行う必要があります。これは簡単にはできません。つまり、システムをPython 2.7に「切り替え」て古いバージョンを削除することはできません。

しかし。システムの派手なギアを気にせず、新しいPythonが必要な場合は、障害物はありません。Go and sudo apt-get install python3and code for 3.x Python for勇気; スクリプトを起動してshebang行python3を使用することを忘れないでください#!/usr/bin/env python3


6
舞台裏の仕組みに関する詳細。
efficiencyIsBliss

16
sudo apt-get install python 3.3.3

これは、異なるバージョンのpython(3.3.3)の場合で、対応するバージョン番号を使用する必要があります。


4
Pythonとバージョンの間にスペースがあってはいけないと思います。sudo apt-get install python3.6私のために働いたが、Python 3.5には影響しません。
GUIジャンキー

sudo apt-get install python 3.6.1 > Note, selecting 'libghc-unix-time-dev-0.3.6-1b8cf' for regex '3.6.1' ... 分離された引数は、複数のパッケージをインストールするようにaptに指示します
Clancy Hood

3
Pythonのバージョン番号をインストールした後、同じですか?理由は何でしょうか?
ラメシュパリーク

この方法を使用しましたが、インストールされている場所(3.7シェルの開き方)が見つかりません。@RameshPareekこれもあなたの問題だったかもしれません。/ usr / binにはないようです。python is already the newest version (2.7.12-1~16.04). python set to manually installed.何か案は?
ビョークナンバーワンファン

10
sudo apt-get install python3.6

これにより、Python 2と共にPython 3がLinuxにインストールされます。Python3にアクセスするには、ターミナルを開いた後に入力します。

python3

2
これにより別の回答が複製され、新しいコンテンツは追加されません。実際に何か貢献できるものがない限り、回答を投稿しないでください。
DavidPostill

3
申し訳ありませんが、新しいコマンドを取得するコマンドを作成したかっただけです。
G-Ox7cd

6
私は私が得ることを実行している場合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
ディム

4

次のようなコマンドの考えに近づいていますsudo apt-get update(これは実際のコマンドですが、望んでいることはしません)。

Pythonおよびインストールした他のすべてをアップグレードするには、次のコマンドを実行します。

sudo apt-get upgrade

感謝しますが、更新コマンドについてはすでに知っていたため、システムが既に最新であるという事実を投稿しました。特定のアプリをターゲットにできるコマンドを見つけたいと思っていました。
efficiencyIsBliss

aptのは最新のものにアップグレードしませんので、それは違いをすることはないだろう; P
ジャーニーマンオタクは

OPは、特に Pythonを更新したいと考えています。所有しているすべてのパッケージを更新するように指示することは、怠慢で悪いアドバイスです。
Przemek D

3

姉妹サイトから:https : //askubuntu.com/questions/44122/how-to-upgrade-a-single-package-using-apt-get

これらの各コマンドはインストールごとに更新されます。これは多くの場合うまく機能するはずですが、特定のケースでは探しているものではないかもしれません。

特定のパッケージのみをアップグレードし、既にインストールされている場合にのみ、次のコマンドを使用します。

sudo apt-get install --only-upgrade packagename


2

pyenvはあなたにとって良いオプションかもしれません:https : //github.com/yyuu/pyenv


@ulidtkoの答えに関して、システムpythonを完全に置き換える代替案としては、希望するpythonバージョンで分離環境を使用することが考えられます。これは「仮想環境」に似ていますが、Python自体です。過去にpython 2.6で実行されるレガシープロジェクト、およびpythonのレガシーバージョンからpython3にアップグレードするときにこれを使用しました。


私はその分野に詳しくありませんが、これが質問にどのように対処し、問題を解決するか説明できますか?
ベンN

1
@ulidtkoの回答(superuser.com/a/241903/152143)に関して、システムpythonを完全に置き換える代替案としては、希望するpythonバージョンで分離環境を使用することが考えられます。これは「仮想環境」に似ていますが、Python自体です。過去にpython 2.6で実行されるレガシープロジェクト、およびpythonのレガシーバージョンからpython3にアップグレードするときにこれを使用しました。
nicefinly

1
apt-get install python

これでうまくいくと思う。リポジトリ内の適切なパッケージ名に一致するように「python」を変更する必要があります。


1

Pythonには3.5バージョンが付属していることは誰もが知っています。したがって、Python 2.7(デフォルトではUbuntu 16.04に存在する)をPython 3.5に更新するのは非常に簡単です。

次の手順に従ってください:

  1. ターミナルを開きます。
  2. sudoコマンドを使用して、rootユーザーになります。
  3. 以下のコードを使用して、Python 2.7を3.5に更新します

    sudo apt-get install python3.5

  4. 許可を求められたら、オプションYを指定します。

  5. プロセスが完了するまで待ちます。
  6. コマンドを使用して画面をクリアします clear
  7. 以下のコマンドでpythonのバージョンを確認してください。

    python-バージョン


1
将来的には適切なフォーマットを使用し、「これがあなたを助けることを願っています」のようなステートメントを避けてください。彼らはただのノイズです。質問に答えることにより、役に立つ質問で質問に答えようとすることが想定されます。答えを読んで、私が修正しなかった小さな文法上の間違いを修正し、プロセスのスクリーンショットを提供する必要があります。今回は書式設定を修正しましたが、二度とやり直すつもりはありません。著者は自分の回答や質問を修正することを強くお勧めします。
ラムハウンド

そして、それはそれほど単純ではありません、これはシンボリックリンクを適切に更新しないので、3.4と3.5が並んでしまいます。通常、Python2はpython3と並んでいます。Python2をPython3にアップグレードするのではなく、作業を移行します。
mckenzm

0

LTSバージョンを実行している単一のケースでは、Pythonがマイナーバージョン(2.7.10ではなく2.7.5など)によって遅れている可能性があります。

1つの可能性は、システムアップグレードすることです

  • セットprompt=normal/etc/update-manager/release-upgrades
  • システムをアップグレードする
    • コマンドラインに入力sudo do-release-upgradeして、アップグレードマネージャーに最新の(= LTS以外の)バージョンへのアップグレードを実行させることができます。
    • GUIソリューションはUpdate Managerを使用します

アップグレードするときはいつものように、リリースノートを参照してください。アップグレードによってシステムが破損する場合があるため、@ Ginoのコメントを参照してください。


おい、あなたの変更を試みた、それ私のUbuntu 14.04システムを壊した!基本的に、14.04からUbuntu 15に更新しようとしましたが、正常に更新できず、グラフィックログインが機能しなくなった半ば状態になりました。たとえば、グラフィックログイン経由でログインしてキックしました。同じグラフィカルログインに戻ります。過去1時間以上、Ubuntu 14.04を自分のマシンに再インストールして、意図した解決策を修正しました。
ジノ

@ジーノ:フィードバックありがとうございます。あなたは見て持っていたaskubuntu.com/questions/612973/...askubuntu.com/questions/223501/...とリリースノートを?「AMDのfglrxドライバー」に問題があります。他の助けが必要ですか?
serv-inc

通常の安全性チェックを回避し、それによって非LTSバージョンへのアップグレードを許可するというあなたの提案は危険に満ちていると思います。今日まで、診断可能なエラーメッセージが表示されなかったため、アップグレードが失敗した理由はわかりません。代わりに、使用できなくなったシステムになりました。記憶が正しければ、システムの大部分を復元できる特定の設定でUbuntuのインストールを再実行することになりました。そして、副次的な注意事項として、私はプロのプログラマーですので、私は一般的にLinuxシステムの周りの私の方法を知っています。
ジーノ

@Gino:これは、LTSから非LTSに切り替える標準的な手順のようです。それは、新しいリリースの認識レベルを変更します。これを「サポート対象」(通常)リリース、「長期のみ」(LTS)リリース、または「なし」(メジャーアップグレードなし)に設定できます。 '引用についてはaskubuntu.com/questions/240160/…を参照してください。システムのアップグレードマネージャーを使用しますが、残念ながら、(デフォルトの)アップグレードが機能しなかったため、バグのあるグラフィックドライバーが原因である可能性があります(上記のリンクを参照)
serv-inc
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.