Tidak dapat mengkloning Python venv ke PC lain
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
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:
- Di mesin lama, jalankan
pip freeze -l > packages.txtdi virtualenv. - Pindah
packages.txtke mesin baru. - Buat virtualenv baru di mesin baru dan masukkan.
- 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:
- 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! - Salin file roda ke mesin baru.
- Buat virtualenv baru di mesin baru dan masukkan.
- Instal paket dari roda di virtualenv baru:
pip install *.whl.
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