Tidak dapat mengkloning Python venv ke PC lain

Sep 17 2020

Saya ingin mengkloning venv saya yang ada ke PC lain tetapi salin tempel saja tidak berfungsi. Ketika saya menyalin venv dan menempelkan ke mesin kedua dan menjalankan

daftar pip

Ini hanya mencantumkan pip dan setup_tools sebagai dependensi yang diinstal. Saya mencoba cara lain untuk mengkloning paket. Saya membuat venv baru di mesin kedua dan menyalin semua file venv pertama ke venv baru itu dengan melewatkan file yang ada dengan nama yang sama di venv baru. Sekarang, saat aku lari

daftar pip

Ini menunjukkan semua dependensi tetapi, ketika saya mencoba meluncurkan notebook jupyter sebagai

notebook jupyter

Ini memberikan kesalahan berikut.

Kesalahan fatal dalam peluncur: Tidak dapat membuat proses menggunakan '"f: \ path \ to \ first_venv \ on_first_machine \ scripts \ python.exe" "C: \ path \ to \ new_venv \ on_the_second_machine \ Scripts \ jupyter.exe" notebook': Sistem tidak dapat menemukan berkas yang dicari.

Saya tidak tahu untuk membuat semuanya bekerja. Tolong bantu!

Edit

Masalahnya adalah saya tidak memiliki koneksi internet di mesin kedua. Sebenarnya ini adalah mesin jarak jauh dengan beberapa protokol keamanan yang diterapkan dan tidak memiliki koneksi internet adalah bagian dari keamanan! Salahku :'(

Jawaban

3 AKX Sep 17 2020 at 05:55

Anda tidak dapat menyalin-menempelkan venv dari satu mesin ke mesin lain karena skrip di dalamnya mungkin merujuk ke lokasi sistem. (Singkatan yang sama untuk mencoba memindahkan venvs di dalam mesin.)

Sebagai gantinya, buat ulang lingkungan di komputer baru:

  1. Di mesin lama, jalankan pip freeze -l > packages.txtdi virtualenv.
  2. Pindah packages.txtke mesin baru.
  3. Buat virtualenv baru di mesin baru dan masukkan.
  4. Instal paket dari file txt: pip install -r packages.txt.

EDIT: Jika Anda tidak memiliki akses internet di komputer kedua, Anda dapat melanjutkan dari langkah 2 dengan:

  1. Jalankan pip wheel -w wheels -r packages.txtdi venv pada mesin pertama. Ini akan mengunduh dan membangun *.whlpaket untuk semua paket yang Anda butuhkan. Perhatikan bahwa ini mengasumsikan kedua mesin serupa dalam OS dan arsitektur!
  2. Salin file roda ke mesin baru.
  3. Buat virtualenv baru di mesin baru dan masukkan.
  4. Instal paket dari roda di virtualenv baru: pip install *.whl.
1 MichaelAnckaert Sep 17 2020 at 05:57

Anda tidak boleh menyalin lingkungan virtual antar mesin. Cara yang benar adalah mengekspor dependensi yang diinstal di lingkungan menggunakan pip freezedan membuat lingkungan virtual baru di komputer lain.

# 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