Anaconda (Conda) ortamında pip yüklü paketleri nasıl takip edebilirim?


141

Anaconda Python dağıtımını yükledim ve kullanıyorum ve Anaconda (Conda) ortamını kullanmaya başladım. Standart conda install...komutları paketleri dağıtımdan ortamlarıma koymak için kullanabilirim, ancak dışarıdaki herhangi bir şeyi (örneğin Flask-WTF, flask-sqlalchemy ve alembic) pip installaktif ortamda kullanmam gerekir . Ancak, ortamın içeriğine baktığımda, dizinde veya conda listbu pip installed paketlerini kullanarak görünmüyor.

Şimdiye kadar kurduğum her paketi kullanarak pip freezeve pip listlisteler.

Benim Anaconda her birinde ne takip etmek için bir yolu var mı envler (hem pipve condayüklü)?


7
pipYüklü kullanım conda, örn ~/anaconda/bin/pip. Paketleri bir condaortama kurmak pipve bununla ve bununla birlikte kurulan paketlerin birleşimini görmek için kullanın conda install.
osa

7
conda listbir süredir başka yollarla (örneğin pip, kolay kurulum, doğrudan ile python setup.py installvb.) Yüklenen Python paketlerini içeriyor
Kalefranz

1
Pip'inizi yükseltmeyin veya bu ihracat ıslatılacak
Andrew Cassidy

Yanıtlar:


120

conda-env artık bunu otomatik olarak yapıyor (pip conda ile kurulmuşsa).

Bir ortamı taşımak için kullanılan dışa aktarma aracını kullanarak bunun nasıl çalıştığını görebilirsiniz:

conda env export -n <env-name> > environment.yml

Dosya hem conda paketlerini hem de pip paketlerini listeleyecektir:

name: stats
channels:
  - javascript
dependencies:
  - python=3.4
  - bokeh=0.9.2
  - numpy=1.9.*
  - nodejs=0.10.*
  - flask
  - pip:
    - Flask-Testing

Ortamı dışa aktarmayı izlemek istiyorsanız environment.yml, yeni ana makineye gidin ve çalıştırın:

conda env create -f path/to/environment.yml

64

condayalnızca kurduğu paketleri takip eder. Ve pipya pipyükleyicinin kendisi kullanılarak kurulan paketleri ya da bu yüzden setuptoolsonların setup.pyconda yapısında kullanılan paketleri yumurta bilgilerini üretti. Yani temel olarak üç seçeneğiniz var.

  1. Sen birliği alabilir conda listve pip freezeve kullanılarak yüklenen paketleri yönetmek conda(bu gösteri conda listile) condapaket yöneticisi ile yüklenen olanlar pip(bu gösteri pip freezedeğil de conda list) ile pip.

  2. Ortamınızda sadece yükleyin python, pipve distributepaketler ve her şeyi yönetmek pip. (Windows'daysanız bu önemsiz değil ...)

  3. Kendi condapaketlerinizi oluşturun ve her şeyi yönetin conda.

Paket oluşturmak çok kolay olduğu için üçüncü seçeneği şahsen tavsiye ederim conda. Sürekliliğin github hesabında örnek tariflerin git deposu vardır. Ancak genellikle aşağıdakilere kadar kaynar:

 conda skeleton pypi PACKAGE
 conda build PACKAGE

ya da sadece:

conda pipbuild PACKAGE

Ayrıca bunları bir kez oluşturduğunuzda, https://binstar.org/ adresine yükleyebilir ve oradan yükleyebilirsiniz.

Sonra her şeyi kullanarak yönetmiş olacaksınız conda.


3
Sadece denedim ~/anaconda/bin/pip install memory-profilerve conda install numbaikisi de gösteriliyor ~/anaconda/bin/pip freeze.
osa

2
"Continuum en github hesabına örnek tarifleri git depo" Şunu musunuz github.com/ContinuumIO/anaconda-recipes ? Mümkünse lütfen bağlantı
kurun

Bu aslında paketi yüklemez, böylece içe aktarabilirsiniz. Stackoverflow.com/a/20750388/125507conda install C:\...PACKAGE-0.0.0-py27_0.tar.bz2
endolith

İlk olarak her zaman conda install python=3.x.yconda ortamınızda, sonraki pip kurulumlarının conda yüklü pipten geçeceği şekilde olduğunu söyleyebilirim.
Ustaman Sangat

24

Pip ve PyPI ile daha iyi entegrasyon sağlayan bir conda (yeni-pypi-install) dalı var. Özellikle conda listesi pip yüklü paketleri de gösterecek ve conda install önce bir conda paketi bulmaya çalışacak ve paketi yüklemek için pip kullanacak.

Bu şubenin bu hafta içinde birleştirilmesi planlanıyor, böylece conda 2.1 sürümü, conda ile daha iyi pip entegrasyonuna sahip olacak.


2
Bunun zaten konda 2.2.3'te (ve muhtemelen ondan önce) çalıştığını belirtmek isterim. Çalışma şekli, eğer denerseniz conda install packageve bir conda tarifi bulamazsa, aracılığıyla yüklemeye çalışır pip(ve ardından izler). pipOrtamınızda olmasa bile yüklemenizi yardımcı olur. Tüm çalışmalarınız için Travis'e teşekkürler!
jorgeca

5
Açıklama, bunu birkaç kez yanlış okuduğum için. @Travis, biri bir conda içinde çalışıyorsa, pip çalıştırmanın önce conda paketlerini arayacağını düşünüyorum. Bunun tersi kesinlikle doğru değildir - conda kurulumu pypi.binstar.org'daki öğeleri bile değil, pypi paketlerini aramaz. Bu, conda 3.5.2 itibariyle geçerlidir.
AnneTheAgile

9
Bu kaldırıldı mı? Çalıştırırsam, conda install autopep8bana "Paket bulunamadı" der ve anaconda.org'u manuel olarak aramam gerektiğini söyler.
Endolit

@AnneTheAgile running pip...da çalışmaz, conda paketini aramaz.
Wang

16

@Viktor Kerkez'in cevabını takip ettim ve çok başarılı oldum. Bazen bu tarifin

conda iskelet pypi PAKETİ

conda yapı PAKETİ

her şey çalıştı gibi görünüyor ama başarıyla PACKAGE ithal edemedim. Son zamanlarda bunu Anaconda kullanıcı grubunda sordum ve Anaconda ile birlikte gelmeyen paketleri oluşturmak ve yönetmek için conda'yı kullanmanın en iyi yolunda @Travis Oliphant'tan duydum. Bu konuyu buradan okuyabilirsiniz , ancak OP'nin sorusunun cevaplarını daha eksiksiz hale getirmek için aşağıdaki yaklaşımı açıklayacağım ...

Örnek: Conda 2.2.5 kullanarak Windows'ta mükemmel prettyplotlib paketini kuracağım.

1 A) conda build --build-recipe prettyplotlib

Derlemenin son TEST bölümüne kadar derleme mesajlarının hepsinin iyi göründüğünü göreceksiniz. Bu hatayı gördüm

"C: \ Anaconda \ conda-bld \ test-tmp_dir \ run_test.py" dosyası, satır 23 içe aktarma Yok Sözdizimi Hatası: Hiçbirine atayamaz TESTS FAILED: prettyplotlib-0.1.3-py27_0

1b) / conda-recipes / prettyplotlib adresine gidin ve meta.yaml dosyasını düzenleyin. Şu anda, adım 1a'daki gibi ayarlanan paketler, testbölümde bir hata içeren yaml dosyalarına neden olur . Örneğin, işte benimkiprettyplotlib

test:   # Python imports   imports:
    - 
    - prettyplotlib
    - prettyplotlib

Önündeki - işaretini içeren boş satırı kaldırmak ve ayrıca gereksiz prettyplotlib satırını kaldırmak için bu bölümü düzenleyin. Bu yazı yazılırken, conda ile yüklediğim harici paketler için çoğu meta.yaml dosyasını düzenlemem gerektiğini buldum. .

1c) Komutu 1a'dan tekrar çalıştırın, bu komut bu kez dışarı hatası ile tamamlanmalıdır. Yapının sonunda, yapıyı binstar'a yüklemek isteyip istemediğiniz sorulacaktır . Hayır girdim ve şu mesajı gördüm:

Bu paketi daha sonra binstar.org'a yüklemek istiyorsanız, şunu yazın:

$ binstar upload C: \ Anaconda \ conda-bld \ win-64 \ prettyplotlib-0.1.3-py27_0.tar.bz2

Bu tar.bz2 dosyası, şimdi yüklemeniz gereken yapıdır.

2) conda install C:\Anaconda\conda-bld\win-64\prettyplotlib-0.1.3-py27_0.tar.bz2

Bu adımları izleyerek Anaconda ile birlikte gelmeyen bir dizi paketi yüklemek için conda'yı başarıyla kullandım. Daha önce, pip kullanarak bunların bazılarını yüklemiştim, bu yüzden pip uninstall PACKAGEPACKAGE'i conda ile yüklemeden önce yaptım . Conda kullanarak, artık tüm paketlerimi conda, pip, easy_install ve python setup.py install ile yüklenmiş bir karışımdan ziyade tek bir yaklaşımla yönetebilirim (neredeyse).

Bağlam için, @Travis Oliphant'ın bu son blog yazısı benim gibi sağlam Python ambalajına giren her şeyi takdir etmeyen, ancak "işler" ne zaman işlediğini kesinlikle takdir eden insanlar için yararlı olacağını düşünüyorum. conda ileriye giden harika bir yol gibi görünüyor ...


2
Conda sürüm 3.5.2 kullanarak, $ conda build --build-recipe XXX komutu; 'Tanınmayan argümanlar: --build-recipe' ile ilgili hatalar. Tam yanıt; kullanım: conda-build [-h] [-c] [--no-binstar-upload] [- çıkış] [-s] [-t] [--no-test] [-V] [-q] RECIPE_PATH [RECIPE_PATH ...] conda-build: hata: tanınmayan argümanlar:
--build


3

Bence burada eksik olan şey yaptığınızda:

>pip install .

setup.py ile yerel bir paket yüklemek için, aynı python sürümünü kullanan tüm conda envs'leri tarafından görülebilen bir paket yükler . Not Pip conda sürümünü kullanıyorum!

Örneğin, python2.7 kullanıyorsam yerel paketi buraya koyar:

/usr/local/anaconda/lib/python2.7/site-packages

Daha sonra python = 2.7 (= varsayılan) ile yeni bir conda env oluşturursanız:

>conda create --name new

>source activate new

Ve sonra yapın:

(new)>conda list    // empty - conda is not aware of any packages yet

Ancak, eğer:

(new)>pip list      // the local package installed above is present

Bu durumda, conda pip paketi hakkında bilgi sahibi değildir, ancak paket python için kullanılabilir.

Ancak, yeni conda env oluşturduktan (ve etkinleştirdikten) sonra yerel paketi (yine pip kullanarak) kurarsam, şimdi conda bunu görür:

(new)>conda list   // sees that the package is there and was installed by pip

Bu yüzden, conda ve pip arasındaki etkileşimin bazı sorunları olduğunu düşünüyorum - yani, bir conda env içinden yerel bir paket yüklemek için pip kullanmak, bu paketi (ancak conda listesi aracılığıyla görülmez) aynı python sürümünün diğer tüm conda envs'leri için kullanılabilir hale getirir.



2

Genellikle 'pip' komutundan önce paketi kurmak istediğiniz ortam için 'bin / pip' klasörüne önek eklerim. Örneğin, py34 ortamına pymc3 yüklemek isterseniz, bu komutu kullanmalısınız:

~/anaconda/envs/py34/bin/pip install git+https://github.com/pymc-devs/pymc3 

Temel olarak ortamınızın "bin / pip" klasörünüz için doğru yolu bulmanız ve install komutundan önce koymanız yeterlidir.


1

Benim which pip aşağıdaki yolu gösterir:

$ which pip
/home/kmario23/anaconda3/bin/pip

Yani, hangi paketi kullanarak yüklersem pip install <package-name> , liste kullanılarak dışa aktarıldığında paketler listesine yansıtılmalıdır:

$ conda list --export > conda_list.txt

Ama bilmiyorum. Bunun yerine, başkaları tarafından önerilen aşağıdaki komutu kullandım:

# get environment name by
$ conda-env list

# get list of all installed packages by (conda, pip, etc.,)
$ conda-env export -n <my-environment-name> > all_packages.yml
# if you haven't created any specific env, then just use 'root'

Şimdi, dosyamdaki tüm paketleri görebiliyorum all-packages.yml.


1

Conda ortamına aşağıdaki komutu yükleyerek başlayabilirsiniz:

conda install pip

Ardından, ihtiyaç duyduğunuz tüm pip paketlerini ortama yükleyerek.

Çevre kullanımını dışa aktarmak için tüm conda ve pip paketlerini kurduktan sonra:

conda env export -n <env-name> > environment.yml

Bu klasörde gerekli dosyayı oluşturur

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.