web-dev-qa-db-ja.com

すべてのモジュールを新しいバージョンのPython(3.6から3.7)に移動する方法)

python 3.7にアップグレードしたところ、すべてのモジュールが以前のバージョンのままであることに気付きました。 Djangoはもう認識されていません。すべてを新しいバージョンに転送するにはどうすればよいですか?今は少し迷っています。新しいバージョンがどこにインストールされているのかさえわかりません。

編集:

$ which python3.6を実行すると、ターミナルに存在しないと表示されますが、python3.6/usr/local/lib/ディレクトリがあり、すべてのモジュールがインストールされています。

同じディレクトリに/usr/local/lib/ディレクトリがあります。python3.7ディレクトリにはいくつかのモジュールがインストールされていますが、多くが欠落しています。ただし、Finderでファイルpython3.7を検索しても、表示されません。 $ which python3.7を実行するとパスは/usr/local/binになるため、ディレクトリと同じパスではありません。

誰もが何が起こったのかを見て、すべてのモジュールをpython3.7に転送する方法を知っていますか?

6
NicoBar

互換性の問題が発生する可能性があるため、すべてのパッケージを再インストールする方が安全です。

pip3.6 list | awk '{print $1}' | xargs -I{} pip3.7 install {}
1
Tianyi Shi

古いpythonバージョンが削除された場合でも、現在のpythonバージョンのpipを--pathオプションとともに使用して一覧表示することができます。以前のバージョンでインストールされたすべてのモジュール。

たとえば、インストールされているすべてのユーザーのpythonモジュールを3.7から3.8に移行する

pip freeze --path ~/.local/lib/python3.7/site-packages > requirements.txt
pip install --user -r requirements.txt

ちなみに、私は常にpip install--userを使用し、システム全体のインストールはLinuxディストリビューションのパッケージマネージャーに任せています。

場合によっては、古いバージョンでpip freezeする機会がないことがあります。これは、私がすでに更新していて、古いバージョンが削除されているためです。一部のパッケージを回復するために私が取ったいくつかの対策がありますが、すべてのパッケージがこの修正で機能するかどうかはわかりません(例:ホイールで構築されたパッケージ)

  1. mv /your/path/to/python3.{6,7}/site-packages/
  2. ケースがvenvの外部(/usr/local/または~/.local)にインストールされたパッケージの場合は、念のため、pipを get-pip.py で再インストールしてください。
  3. Virtualenvを回復している場合。 virtualenvをアクティブにして、 my script を使用します

これで、ほとんどのパッケージが機能するはずです。何かが誤動作した場合、pip reinstallが機能します。それでも100%動作させたい場合は、pip freezenow。????

0
ttimasdf