PATHに新しいバージョンのPythonを追加すると危険ですか?つまり、いくつかの重要なシステムプログラムがクラッシュするのでしょうか?
これが古いpython2を削除せずにpython3(またはpython2のデフォルト以外のバージョン)を指すように "python"コマンドを効果的に変更するとします。変更がルートに影響しなくても安全ではありませんか?
答え1
長い言葉を短く〜
安全かもしれませんが…
危険です。これがpython
多くのディストリビューションのコマンドラインデフォルトがPython 2である理由です。
これは本当にあなたに傷を与えますか?
どのLinuxディストリビューションにどのパッケージがあるのかわからない場合は不明です。これを試してみると、どのような問題が発生するのかを知るのに十分な世界中のすべての利用可能なソフトウェアパッケージを十分に監督できる人がいるかどうか疑問に思います。
しかし、時間の経過とともに、リスクはますます減少しています。 Python 3は成熟しており、まだPython 2を使用している人はリスクをよりよく認識しているので、これを防ぐことができます。この時の危険可能十分低くて外れることがあります。
リスクは何ですか?
Pythonで書かれたLinux上で動作する多くのプログラムがあります。 Pythonを実行可能ファイルとして呼び出すので、Pythonを使用していることに気づかないかもしれません。彼らは使うシェルボーン明示的に呼び出さずにPythonを呼び出します。
問題は、ShebangのPython 2用に多くのプログラムが書かれていることです。以前は設定#!/usr/bin/python
。同様に、puthonスクリプトを呼び出すシェルスクリプトは簡単に呼び出すのが簡単ですpython script.py
。 Python 3に切り替えると、/usr/bin/python
多くのプログラムがクラッシュします。ただし、時間の経過とともに、ほとんどの古いプログラムは特定のバージョン(/usr/bin/python2
より多くのバージョン)を要求するように修正されました/usr/bin/python2.7
。スタイルの問題のため、Python 3プログラムではバージョンを指定する必要があります。
変更する前に確認してください
物理サーバーがない場合は、本番サーバーでこれを変更しません。本物良い理由。しかし、自分のラップトップを交換すると、リスクははるかに低くなります。
私はそれを実行して次のことを確認しようとしています。
grep /usr/bin/python /usr/bin/* /usr/sbin/* 2> /dev/null
/usr/bin/python
...バージョンを指定していないすべての呼び出しを見つけます。何もなければ試してみてください。予期しない状況に注意してください。
答え2
要求されたアクションを実行する理由の詳細がないと、一般的な回答以外のコンテンツを作成するのは困難です。
既存の2.7.yに3.7.xを追加することを考えると、原則として悪いことが起こる危険はありません。両方のバージョンのPythonは分離されており、異なる依存関係ツリーを持っています。 1つのシステムで問題なく共存できます。同時に実行することもできます。
一方、3.4.zインスタンスを実行していて3.7.xを並べてインストールする場合は、そうしないことをお勧めします。他のバージョンに関連するいくつかのライブラリと依存関係は、間違いなく同じ名前を持ち、最後のインストールに置き換えられるため、以前のバージョンの内容が破損します。この特別なケースでは、最新バージョンのPythonにアップグレードするのが最善です。
さまざまなタスクに対してさまざまなライブラリバージョンを実行する必要がある場合は、いつでもJupyter Notebookを使用できます。これにより、さまざまなバージョンとそのパッケージ間で特定のレベルの分離を達成できます。
編集する:
あなたのコメントによると、3.7と2.7を並べてインストールすると、2つのPythonバージョンのいずれかが実行可能ファイルのデフォルトパスにインストールされます。 Python 3.7だそうです。もう1つはpython2
cliを呼び出して通常どおりに使用されます。 Python 2.7がPATH変数で終わる場合は、Python 3.7を実行するにはpython3
cliでコマンドを実行する必要があります。最後に、どちらが何であるかを知るために、cliで実行すると、どちらを呼び出すことができるか、どちらを2〜3個の数字のサフィックスで呼び出す必要があるかをpython --version
確認できます。python
これは、ほとんどのディストリビューションとほぼすべてのバージョンで一般的です。