Python venv başka bir bilgisayara klonlanamıyor
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
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:
- Eski makinede,
pip freeze -l > packages.txtvirtualenv'de çalıştırın . - Taşı
packages.txtyeni bir makineye bitti. - Yeni makinede yeni bir sanal ortam oluşturun ve girin.
- 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:
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!- Tekerlek dosyalarını yeni makineye kopyalayın.
- Yeni makinede yeni bir sanal ortam oluşturun ve girin.
- Yeni virtualenv tekerlekleri paketleri yükleyin:
pip install *.whl.
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