システムのPythonをアップグレードした後、pipはユーザーがインストールしたパッケージを検出しませんか?


1

Fedora KDE(x64)PCでPythonを使用しています。以前はFedora 25を使用していましたが、Python 3.5をインストールしsudo dnf install python3、いくつかのパッケージnumpyscipy使用し、などのコマンドを使用しましたsudo dnf install python3-numpy。今、すべてではない、適切なパッケージまたはバージョンは、Fedoraのリポジトリに使用可能だったので、私は中にインストールされているもののみ~/.local/lib/python3.5/site-packages/を経由してpip3 install <packagename> --user

早速、Fedoraをバージョン28にpython3アップグレードしました。その間にバージョン3.6にアップグレードされました。他のすべてのpython3-*パッケージも適切にアップグレードされています。現在、pip3はのようにユーザーがインストールしたパッケージを認識せずpip3 list --user、出力をまったく返しません。ただし、~/.local/lib/python3.5/site-packages/ディレクトリはまだ存在しており、多数のパッケージがあります。

今、私は何をすべきかわからない....

  • 削除できるsite-packagesものを正確に知っていれば、の内容を削除できますか?次に、pipを使用して実際にインストールする必要のあるパッケージを再調査するように設定できます。
  • 私は多分名前を変更することができます~/.local/lib/python3.5するには~/.local/lib/python3.6
  • 古いユーザーがインストールしたPythonパッケージの内容をpipにインポートする他の方法はありますか?

どうすればいいのか迷っています。

回答:


0

まだPython 3.5を使用している場合、これは非常に簡単なことです。

$ pip3.5 list --user --format=freeze | xargs pip3.6 install --user

Python 3.6のすべてのユーザーサイトパッケージを再インストールします。古いPythonのインストールがなくなったpip3.5場合(そうでない場合)、事態は少し複雑になりますが、それでも管理できないものはありません。まず、ユーザーサイトがまだ存在していることを確認して、作業対象を用意します。

$ find ~/.local -type d -name "site-packages" | grep python3.5
/Users/hoefling/.local/lib/python3.5/site-packages

次にpkg_resources、そのユーザーサイトで利用可能なディストリビューションのリストを使用します。

$ find ~/.local -type d -name "site-packages" | grep python3.5 | xargs python3.6 -c "import pkg_resources, sys; print(' '.join((f'{pkg.project_name}=={pkg.version}' for pkg in pkg_resources.find_distributions(sys.argv[1]))))"
wheel==0.30.0

ユーザーサイトのディレクトリは、コードを使用してディレクトリをスキャンするPythonコード行にパイプされpkg_resources.find_distributionsます(ドキュメントの配布の取得または作成セクションを参照)pip。いくつかのフォーマットを追加したのでpip3.6、1ライナーを拡張する最後の反復で出力を新しいものに渡すことができます。完全なワンライナーは次のとおりです。

$ find ~/.local -type d -name "site-packages" | grep python3.5 | xargs python3.6 -c "import pkg_resources, sys; print(' '.join((f'{pkg.project_name}=={pkg.version}' for pkg in pkg_resources.find_distributions(sys.argv[1]))))" | xargs pip3.6 install --user

pkg_resourcessetuptoolsパッケージの一部であり、事前にインストールされている必要があります(少なくともhttps://www.python.org/downloads/のインストーラーを使用する場合はそうです)。そうでない場合は、setuptools最初にインストールします。

$ dnf install python3-setuptools
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.