Anaconda dışa aktarma Ortamı dosyası


129

Diğer bilgisayarlarda kullanılabilecek anaconda ortam dosyasını nasıl yapabilirim?

Anaconda python ortamımı kullanarak YML'ye aktardım conda env export > environment.yml. Dışa aktarılan environment.yml, prefix: /home/superdev/miniconda3/envs/juicyenvanaconda'mın konumunu diğerlerinin bilgisayarlarında farklı olacak şekilde eşleyen bu satırı içerir .


7
Sadece bazı testler yapıyordum ve önekin yok sayıldığını buldum ... bunun neden env dışa aktarımında olduğundan emin değilim. Bunu conda env create -f environment.yml bir kenara yapabilmelisiniz , benim deneyimlerime göre bu, platformlar arasında çalışmayacak, çünkü Windows kullanıyorsanız conda env, `vs2015_runtime` gibi birçok bağımlılığı listeleyecektir. Ama tabii ki bu linux'ta mevcut değil.
Alex G Rice

4
Conda aslında environment.ymldosyayı elle oluşturmanızı önerir , böylece dışarıda bırakabilirsiniz - bkz. Stackoverflow.com/questions/39280638/…
Brian Burns

Yanıtlar:


179

Teknik condaözelliklerde, prefix: ...satır olmadan bir ortam dosyasını dışa aktarmanıza izin veren hiçbir şey bulamıyorum . Ancak, Alex'in yorumlarda belirttiği gibi , conda dosyadan bir ortam oluştururken önek satırını önemsemiyor gibi görünüyor.

Bunu göz önünde bulundurarak, diğer kullanıcının varsayılan yükleme yolunuz hakkında bilgi sahibi olmamasını istiyorsanız, grepyazmadan önce önek satırını kaldırabilirsiniz environment.yml.

conda env export | grep -v "^prefix: " > environment.yml

Her iki durumda da diğer kullanıcı şunu çalıştırır:

conda env create -f environment.yml

ve ortam, varsayılan conda ortamı yoluna yüklenecektir.

Sisteminiz için varsayılandan farklı bir yükleme yolu belirtmek istiyorsanız (environment.yml dosyasındaki 'önek' ile ilgili değil), sadece -pbayrağı ve ardından gerekli yolu kullanın.

conda env create -f environment.yml -p /home/user/anaconda3/envs/env_name

Conda'nın environment.yml, ortamınızı platformlar (Windows / Linux / Mac) arasında paylaşmak istiyorsanız özellikle önemli olan elle oluşturmayı önerdiğini unutmayın . Bu durumda, sadece prefixçizgiyi bırakabilirsiniz .


1
... eggcellent! 👍
Ahi Tuna

44

Paketleri başka bir bilgisayara kurulacak bir ortamdan kaydetmenin en kolay yolu şudur:

$ conda list -e > req.txt

daha sonra ortamı kullanarak kurabilirsiniz

$ conda create -n new environment --file req.txt

kullanıyorsanız pip, lütfen aşağıdaki komutları kullanın: referans https://pip.pypa.io/en/stable/reference/pip_freeze/

$ env1/bin/pip freeze > requirements.txt
$ env2/bin/pip install -r requirements.txt

Güzel, ancak yine de pip yüklü paketlerle çalışmıyor gibi görünüyor.
Little Bobby Tables

1
teşekkür ederim Verilen referansa göre güncelledim
javac

Bir şeyler kurmak için hem Anaconda Navigator hem de pip (ortam içinden) kullandım. Ne kullanmamı önerirsiniz? Her iki komut da mı?
DA

Conda komutunu Anaconda ortamında kullanmanın daha iyi olacağını düşünüyorum, gerekirse pip de kullanabilirsiniz
javac

9
  • Linux

    conda env export - yapı yok | grep -v "önek"> ortam.yml

  • pencereler

    conda env export - yapı yok | findstr -v "önek"> ortam.yml


Gerekçe: Varsayılan olarak, conda env exportderleme bilgilerini içerir:

$ conda env export
...
dependencies:
  - backcall=0.1.0=py37_0
  - blas=1.0=mkl
  - boto=2.49.0=py_0
...

Bunun yerine, ortamınızı derleme bilgisi olmadan dışa aktarabilirsiniz:

$ conda env export --no-builds
...
dependencies:
  - backcall=0.1.0
  - blas=1.0
  - boto=2.49.0
...

Ortamı Python sürümünden ve işletim sisteminden bağlayan.


1
Bunun iyi bir yanıt olduğunu kabul ediyorum, ancak ortamları platformlar arasında aktarmak için derleme bilgilerini hariç tutmanın neden yararlı olduğuna dair bazı ayrıntılar eklemeyi düşünün.
merv

Bunu kullanarak bitti, ama harika fikir @merv. Bunu yaptım.
François Leblanc

Ne yazık ki, farklı işletim sistemlerinde dışa aktarma ve yeniden yükleme kurulurken bu her zaman işe yaramayacaktır.
Sören

2

Paketleri yalnızca dize biçiminde dışa aktarmak, tüm condaortamı dışa aktarmaktan daha taşınabilir buluyorum . Önceki yanıtın önerdiği gibi:

$ conda list -e > requirements.txt

Bununla birlikte, bu requirements.txt, işletim sistemleri arasında, örneğin Macve arasında taşınabilir olmayan yapı numaralarını içerir Ubuntu. İçinde conda env exportseçeneğimiz var --no-buildsama ile değil conda list -e, bu nedenle aşağıdaki komutu vererek yapı numarasını kaldırabiliriz:

$ sed -i -E "s/^(.*\=.*)(\=.*)/\1/" requirements.txt 

Ve ortamı başka bir bilgisayarda yeniden oluşturun:

conda create -n recreated_env --file requirements.txt 

sedkomut oldukça iyi çalıştı. Bir yama sürümünü silmem gerekiyordu. Yani major.minor.patchetmek major.minorve işe yaradı. Görünüşe göre, düşük yama numarası ana depolar tarafından bırakılmıştı.
Lucas

1
  1. Önce conda ortamınızı etkinleştirin (dışa aktarmak / yedeklemek istediğiniz ortam)
conda activate myEnv
  1. Tüm paketleri bir dosyaya aktarın (myEnvBkp.txt)
conda list --explicit > myEnvBkp.txt
  1. Ortamı geri yükleyin / içe aktarın:
conda create --name myEnvRestored --file myEnvBkp.txt
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.