Pythonvenvを別のPCに複製できません

Sep 17 2020

既存のvenvを別のPCに複製したいのですが、単にコピー&ペーストが機能しません。venvをコピーして2番目のマシンに貼り付け、実行すると

ピップリスト

インストールされている依存関係としてpipとsetup_toolsのみがリストされます。パッケージのクローンを作成する別の方法を試しました。2番目のマシンで新しいvenvを作成し、最初のvenvのすべてのファイルをその新しいvenvにコピーし、新しいvenv内の同じ名前の既存のファイルをスキップしました。今、私が走ると

ピップリスト

すべての依存関係が表示されますが、jupyterノートブックを次のように起動しようとすると

jupyterノートブック

次のエラーが発生します。

ランチャーの致命的なエラー: '"f:\ path \ to \ first_venv \ on_first_machine \ scripts \ python.exe" "C:\ path \ to \ new_venv \ on_the_second_machine \ Scripts \ jupyter.exe"ノートブック'を使用してプロセスを作成できません:システムは、指定されたファイルを見つけることができません。

私は物事を機能させることを知りません。助けてください!

編集

問題は、2台目のマシンにインターネット接続がないことです。実際には、いくつかのセキュリティプロトコルが適用されたリモートマシンであり、インターネットに接続されていないことはセキュリティの一部です。私の悪い: '(

回答

3 AKX Sep 17 2020 at 05:55

あるマシンから別のマシンにvenvをコピーして貼り付けることはできません。これは、それらのスクリプトがシステムの場所を参照している可能性があるためです。(同じことは、マシン内でvenvを移動しようとすることを意味します。)

代わりに、新しいマシンで環境を再作成します。

  1. 古いマシンでpip freeze -l > packages.txtは、virtualenvで実行します。
  2. packages.txt新しいマシンに移動します。
  3. 新しいマシンに新しいvirtualenvを作成し、入力します。
  4. txtファイルからパッケージをインストールしますpip install -r packages.txt。

編集: 2台目のマシンでインターネットにアクセスできない場合は、次の手順で手順2から続行できます。

  1. pip wheel -w wheels -r packages.txt最初のマシンのvenvで実行します。これにより*.whl、必要なすべてのパッケージのパッケージがダウンロードおよびビルドされます。これは、両方のマシンのOSとアーキテクチャが類似していることを前提としていることに注意してください。
  2. ホイールファイルを新しいマシンにコピーします。
  3. 新しいマシンに新しいvirtualenvを作成し、入力します。
  4. 新しいvirtualenvのホイールからパッケージをインストールしますpip install *.whl。
1 MichaelAnckaert Sep 17 2020 at 05:57

マシン間で仮想環境をコピーしないでください。正しい方法はpip freeze、他のマシンを使用して環境にインストールされている依存関係をエクスポートし、新しい仮想環境を作成することです。

# One the first machine
pip freeze > requirements.txt
# Copy requirements.txt to the other machine, or store in a source repository
# Then install the requirements in the new virtual environment
pip install -r requirements.txt