Python venv başka bir bilgisayara klonlanamıyor

Sep 17 2020

Mevcut venv'imi başka bir bilgisayara klonlamak istiyorum, ancak kopyala yapıştır çalışmıyor. Venv'i kopyalayıp ikinci makineye yapıştırdığımda ve çalıştırdığımda

pip listesi

Yalnızca kurulu bağımlılıklar olarak pip ve setup_tools'u listeler. Paketleri klonlamanın başka bir yolunu denedim. İkinci makinede yeni bir venv oluşturdum ve yeni venv'de aynı isimli mevcut dosyaları atlayarak ilk venv'in tüm dosyasını yeni venv'e kopyaladım. Şimdi koştuğumda

pip listesi

Tüm bağımlılıkları gösterir, ancak jupyter dizüstü bilgisayarı şu şekilde başlatmaya çalıştığımda

jupyter defter

Aşağıdaki hatayı verir.

Başlatıcıda önemli hata: '"f: \ path \ to \ first_venv \ on_first_machine \ scripts \ python.exe" "C: \ path \ to \ new_venv \ on_the_second_machine \ Scripts \ jupyter.exe" not defteri' kullanılarak işlem oluşturulamıyor: Sistem belirtilen dosyayı bulamıyor.

İşlerin yürümesini bilmiyorum. Lütfen yardım et!

Düzenle

Sorun şu ki, ikinci makinede internet bağlantım yok. Aslında, bazı güvenlik protokollerinin uygulandığı uzak bir makinedir ve internet bağlantısının olmaması güvenliğin bir parçasıdır! Benim hatam :'(

Yanıtlar

3 AKX Sep 17 2020 at 05:55

Venv'leri bir makineden diğerine kopyalayıp yapıştıramazsınız çünkü içlerindeki komut dosyaları sistem konumlarına atıfta bulunabilir. (Aynısı, bir makine içindeki venleri taşımaya çalışmak anlamına gelir.)

Bunun yerine, ortamı yeni makinede yeniden oluşturun:

  1. Eski makinede, pip freeze -l > packages.txtvirtualenv'de çalıştırın .
  2. Taşı packages.txtyeni bir makineye bitti.
  3. Yeni makinede yeni bir sanal ortam oluşturun ve girin.
  4. Metin dosyasından paketleri yükleyin: pip install -r packages.txt.

DÜZENLEME: İkinci makinede internet erişiminiz yoksa, 2. adımdan şu şekilde devam edebilirsiniz:

  1. pip wheel -w wheels -r packages.txtİlk makinede venv'i çalıştırın . Bu, *.whlihtiyacınız olan tüm paketler için paketleri indirecek ve oluşturacaktır. Bunun, her iki makinenin de işletim sistemi ve mimaride benzer olduğunu varsaydığını unutmayın!
  2. Tekerlek dosyalarını yeni makineye kopyalayın.
  3. Yeni makinede yeni bir sanal ortam oluşturun ve girin.
  4. Yeni virtualenv tekerlekleri paketleri yükleyin: pip install *.whl.
1 MichaelAnckaert Sep 17 2020 at 05:57

Makineler arasında asla bir sanal ortamı kopyalamamalısınız. Doğru yol, pip freezediğer makineyi kullanarak ortama yüklenen bağımlılıkları dışa aktarmak ve diğer makinede yeni bir sanal ortam oluşturmaktır.

# 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