私はAMIを作成していますウブントゥ 20.04(Focal Fossa)、デフォルトの Python バージョンを 3.6 にします。
Python 3.6 と適切な pip をインストールし、次のように代替を設定しました。
update-alternatives --install \
/usr/bin/python3 \
python3 \
/usr/bin/python3.6 \
10
しかし、私は多くの問題に直面していますPython のpython3-apt
パッケージは、 (apt_pkg、apt_inst)などがありnetifaces
、おそらくまだ見つけていないものも多数あります。
これらはすべて にあり/usr/lib/python3/dist-packages
、パッケージ名は次の形式になっています。
{name}.cpython-38-x86_64-linux-gnu.so
Ubuntu 20.04 のデフォルトの Python バージョンは Python 3.8 なので、これは理にかなっています。
Google からの即時の解決策は、次のように名前をリンクすることです。
ln -s {name}.cpython-38-x86_64-linux-gnu.so {name}.so
つまり:
ln -s apt_pkg.cpython-38-x86_64-linux-gnu.so apt_pkg.so
ln -s netifaces.cpython-38-x86_64-linux-gnu.so netifaces.so
apt install --reinstall python3-apt
デフォルトの Python バージョンが 3.6 の場合、関連パッケージ ( ) を再インストールしようとしましたが、機能しませんでした。また、*.so
ファイルをリンクするこのソリューションはスケーラブルではありません。
Python 3.6 をシステムのデフォルトの CPython パッケージで動作させる方法はありますか?
答え1
ご存知のとおり、このシステムはシステムPython のバージョンが期待どおりであることを確認します。Python 3.6 を搭載したシステムを本当に必要とする場合は、Python 3.6 を使用した (理想的には、まだサポートされている) リリースを見つけるのが最善策です。この場合、Ubuntu 18.04 です。
AMI で実行されるプログラムに Python 3.6 を提供したい場合は、システム Python を置き換える代わりに、仮想環境の使用を検討できます。pyenv始めるには良い場所です。
答え2
クラウド上の任意のマシンの環境を、近くにある物理マシンと同じように管理します。Ubuntu 20.x を使用しており、デフォルトの Python インストールが 3.8 であるが、Python v3.6 が必要な場合は、必要に応じて仮想環境をインストールします。これは で実行できますpyenv
。現時点で行っていることは、デフォルトの Python インストールをゆっくりと破壊することであり、これはそのマシン上の無数のパッケージ (クラウドベースかどうかに関係なく) に悪影響を及ぼします。
私は追加しますチュートリアルご興味があれば、Python 環境の仮想化について書きました (特にpyenv
)。