AMIを作成しています。Ubuntu 20.04(Focal Fossa)、デフォルトのPythonバージョンを3.6に設定したいと思います。
正しい pip で Python 3.6 をインストールした後、次のように選択肢を設定しました。
update-alternatives --install \
/usr/bin/python3 \
python3 \
/usr/bin/python3.6 \
10
しかし、私は彼に関連する多くの問題に直面しました。CPythonpython3-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
デフォルトのPythonバージョンが3.6()のときに関連パッケージを再インストールしてみましたが、apt install --reinstall python3-apt
成功しなかったため、このリンクされたファイルソリューションは*.so
拡張性がありません!
Python 3.6をシステムのデフォルトのCPythonパッケージと連携させる方法はありますか?
答え1
あなたが見つけたように、システムは次のように依存します。システムPythonのバージョンは期待どおりです。 Python 3.6を含むシステムが本当に必要な場合は、最善の方法はPython 3.6を使用する(理想的にはまだサポートされている)バージョンを見つけることです。あなたの場合はUbuntu 18.04です。
AMI で実行されているプログラムに Python 3.6 を提供する場合は、システム Python を置き換えるのではなく、仮想環境の使用を検討してください。ピエンブ良い出発点です。
答え2
クラウド内のすべてのコンピュータの環境を、まるで近くの物理コンピュータであるかのように管理します。 Ubuntu 20.x を使用していて、既定のインストール済み Python バージョンが 3.8 であるが、Python v3.6 が必要な場合は、必要に応じて仮想環境をインストールします。これを行うために使用できますpyenv
。現在行っていることは、デフォルトのPythonインストールをゆっくり停止することです。これは、お使いのコンピュータ上の多数のパッケージ(クラウドベースであるかどうかにかかわらず)に悪影響を及ぼします。
追加する地図時間興味があれば、私はPython環境の仮想化について書いたことがあります(特にリソースpyenv
)。