Saya telah menginstal dan telah menggunakan distribusi Anaconda Python, dan saya sudah mulai menggunakan lingkungan Anaconda (Conda). Saya dapat menggunakan conda install...
perintah standar untuk meletakkan paket dari distribusi ke lingkungan saya, tetapi untuk menggunakan apa pun di luar (yaitu Flask-WTF, flask-sqlalchemy, dan alembic) saya perlu menggunakan pip install
di lingkungan aktif. Namun, ketika saya melihat konten lingkungan, baik di direktori, atau menggunakan paket ed conda list
ini pip install
tidak muncul.
Menggunakan pip freeze
dan pip list
hanya mencantumkan setiap paket yang pernah saya instal.
Apakah ada cara untuk melacak apa yang ada di setiap Anaconda saya env
(baik pip
dan conda
terpasang)?
pip
diinstal denganconda
, misalnya~/anaconda/bin/pip
. Gunakan untuk menginstal paket keconda
lingkungan, serta untuk melihat penyatuan paket yang diinstal dengan thispip
dan withconda install
.conda list
untuk sementara sekarang sudah termasuk paket python yang diinstal dengan cara lain (misalnya pip, instalasi mudah, langsung denganpython setup.py install
, dll dll)Jawaban:
conda-env sekarang melakukan ini secara otomatis (jika pip diinstal dengan conda).
Anda dapat melihat cara kerjanya dengan menggunakan alat ekspor yang digunakan untuk memigrasi lingkungan:
File tersebut akan mencantumkan paket conda dan paket pip:
name: stats channels: - javascript dependencies: - python=3.4 - bokeh=0.9.2 - numpy=1.9.* - nodejs=0.10.* - flask - pip: - Flask-Testing
Jika Anda ingin menindaklanjuti dengan mengekspor lingkungan, pindah
environment.yml
ke mesin host baru dan jalankan:sumber
-pip:
bagian ini menandai semua paket yang diinstal melalui pip. Juga, sepengetahuan saya,conda env export
tidak akan pernah menghasilkan nilai pencocokan semvar , seperti yang-nodejs=0.10.*
ditunjukkan dalam contoh ini. Ini akan memberikan nilai eksplisit seperti-nodejs=0.10.1
dan Anda harus meletakkan*
jika itu yang Anda inginkan. Jika itu bisa menangani pencocokan semvar, itu akan luar biasa dan saya akan senang mendengar bagaimana membuat keajaiban itu terjadi. :)conda
hanya akan melacak paket yang diinstal. Danpip
akan memberi Anda paket-paket yang diinstal menggunakanpip
penginstal itu sendiri atau yang mereka gunakansetuptools
dalamsetup.py
pembuatan konda mereka menghasilkan informasi telur. Jadi pada dasarnya Anda memiliki tiga opsi.Anda dapat mengambil persatuan
conda list
danpip freeze
dan mengelola paket yang diinstal dengan menggunakanconda
(menunjukkan bahwa dalamconda list
) denganconda
manajer paket dan orang-orang yang diinstal denganpip
(menunjukkan bahwa dipip freeze
tetapi tidak dalamconda list
) denganpip
.Instal di lingkungan Anda hanya
python
,pip
dandistribute
paketkan dan kelola semuanya denganpip
. (Ini tidak sepele jika Anda menggunakan Windows ...)Buat
conda
paket Anda sendiri , dan kelola semuanya denganconda
.Saya pribadi akan merekomendasikan opsi ketiga karena sangat mudah untuk membangun
conda
paket. Ada gudang git contoh resep di akun github kontinum. Tapi biasanya intinya adalah:atau hanya:
Juga ketika Anda telah membuatnya sekali, Anda dapat mengunggahnya ke https://binstar.org/ dan langsung menginstalnya dari sana.
Maka Anda akan memiliki semua yang dikelola menggunakan
conda
.sumber
~/anaconda/bin/pip install memory-profiler
danconda install numba
, dan keduanya ditampilkan~/anaconda/bin/pip freeze
.conda install C:\...PACKAGE-0.0.0-py27_0.tar.bz2
seperti yang dijelaskan di stackoverflow.com/a/20750388/125507conda install python=3.x.y
di lingkungan conda Anda sehingga pemasangan pip berikutnya melalui pip yang terpasang secara konda.Ada cabang conda (new-pypi-install) yang menambahkan integrasi yang lebih baik dengan pip dan PyPI. Dalam daftar conda tertentu juga akan menunjukkan paket yang diinstal pip dan conda install pertama-tama akan mencoba menemukan paket conda dan gagal yang akan menggunakan pip untuk menginstal paket.
Cabang ini dijadwalkan untuk digabungkan akhir minggu ini sehingga versi 2.1 dari conda akan memiliki integrasi pip yang lebih baik dengan conda.
sumber
conda install package
dan tidak dapat menemukan resep conda, ia mencoba menginstalnya melaluipip
(dan kemudian melacaknya). Ia bahkan menyarankan untuk menginstalpip
jika tidak di lingkungan Anda. Terima kasih Travis untuk semua pekerjaan Anda!conda install autopep8
ia memberi tahu saya "Tidak ada paket yang ditemukan" dan bahwa saya harus mencari anaconda.org secara manual.running pip...
juga tidak berfungsi, tidak akan mencari paket conda sama sekali.Saya mengikuti jawaban @Viktor Kerkez dan meraih kesuksesan yang beragam. Saya menemukan bahwa terkadang resep ini
akan terlihat seperti semuanya bekerja tetapi saya tidak berhasil mengimpor PAKET. Baru-baru ini saya bertanya tentang hal ini di grup pengguna Anaconda dan mendengar dari @Travis Oliphant sendiri tentang cara terbaik menggunakan conda untuk membangun dan mengelola paket yang tidak disertakan dengan Anaconda. Thread ini bisa anda baca disini , namun saya akan menjelaskan pendekatannya dibawah ini semoga dapat membuat jawaban atas pertanyaan OP lebih lengkap ...
Contoh: Saya akan menginstal paket prettyplotlib yang sangat baik di Windows menggunakan conda 2.2.5.
1a)
conda build --build-recipe prettyplotlib
Anda akan melihat pesan build semuanya terlihat bagus hingga bagian TEST terakhir dari build tersebut. Saya melihat kesalahan ini
1b) Masuk ke / conda-recipes / prettyplotlib dan edit file meta.yaml. Saat ini, paket-paket yang diatur seperti pada langkah 1a menghasilkan file yaml yang memiliki kesalahan di
test
bagian tersebut. Misalnya, inilah cara saya mencariprettyplotlib
test: # Python imports imports: - - prettyplotlib - prettyplotlib
Edit bagian ini untuk menghapus baris kosong yang didahului oleh - dan juga hapus baris prettyplotlib yang berlebihan. Pada saat penulisan ini saya telah menemukan bahwa saya perlu mengedit sebagian besar file meta.yaml seperti ini untuk paket eksternal yang saya instal dengan conda, artinya ada baris impor kosong yang menyebabkan kesalahan bersama dengan impor yang berlebihan dari paket yang diberikan .
1c) Jalankan kembali perintah dari 1a, yang seharusnya selesai tanpa kesalahan kali ini. Di akhir build, Anda akan ditanya apakah ingin mengupload build ke binstar . Saya memasukkan Tidak dan kemudian melihat pesan ini:
File tar.bz2 itu adalah build yang sekarang harus Anda instal.
2)
conda install C:\Anaconda\conda-bld\win-64\prettyplotlib-0.1.3-py27_0.tar.bz2
Mengikuti langkah-langkah ini saya telah berhasil menggunakan conda untuk menginstal sejumlah paket yang tidak disertakan dengan Anaconda. Sebelumnya saya telah menginstal beberapa ini menggunakan pip, jadi saya lakukan
pip uninstall PACKAGE
sebelum menginstal PACKAGE dengan conda. Dengan menggunakan conda, saya sekarang dapat mengelola (hampir) semua paket saya dengan satu pendekatan daripada memiliki campuran yang diinstal dengan conda, pip, easy_install, dan python setup.py install.Untuk konteksnya, saya pikir posting blog baru-baru ini oleh @Travis Oliphant akan bermanfaat bagi orang-orang seperti saya yang tidak menghargai segala sesuatu yang masuk ke dalam kemasan Python yang kuat tetapi tentu saja menghargai ketika sesuatu "berfungsi". Conda sepertinya cara yang bagus untuk maju ...
sumber
Inilah mengapa saya menulis Picky: http://picky.readthedocs.io/
Ini adalah paket python yang melacak paket yang diinstal dengan pip atau conda di virtualenvs dan conda envs.
sumber
Saya pikir apa yang hilang di sini adalah ketika Anda melakukannya:
untuk menginstal paket lokal dengan setup.py, itu menginstal paket yang terlihat oleh semua conda env yang menggunakan versi python yang sama. Catatan Saya menggunakan pip versi conda!
misalnya, jika saya menggunakan python2.7, paket lokal akan diletakkan di sini:
/usr/local/anaconda/lib/python2.7/site-packages
Jika saya kemudian membuat conda env baru dengan python = 2.7 (= default):
Lalu lakukan:
(new)>conda list // empty - conda is not aware of any packages yet
Namun, jika saya melakukannya:
(new)>pip list // the local package installed above is present
Jadi dalam kasus ini, conda tidak mengetahui tentang paket pip, tetapi paket tersebut tersedia untuk python.
Namun, jika saya malah menginstal paket lokal (sekali lagi menggunakan pip) setelah saya membuat (dan mengaktifkan) conda env baru, sekarang conda melihatnya:
(new)>conda list // sees that the package is there and was installed by pip
Jadi saya pikir interaksi antara conda dan pip memiliki beberapa masalah - yaitu, menggunakan pip untuk menginstal paket lokal dari dalam satu conda env membuat paket itu tersedia (tetapi tidak terlihat melalui daftar conda) ke semua conda env lain dari versi python yang sama.
sumber
conda env export
daftar semua paket conda dan pip di lingkungan.conda-env
harus dipasang di conda root (conda install -c conda conda-env
).Untuk menulis
environment.yml
file yang menjelaskan lingkungan saat ini:Referensi:
sumber
Saya biasanya mengawali folder 'bin / pip' untuk lingkungan tertentu yang Anda inginkan untuk menginstal paket sebelum perintah 'pip'. Misalnya, jika Anda ingin menginstal pymc3 di lingkungan py34, Anda harus menggunakan perintah ini:
Anda pada dasarnya hanya perlu menemukan jalur yang benar ke folder 'bin / pip' lingkungan Anda dan meletakkannya sebelum perintah instal.
sumber
Saya
which pip
menunjukkan jalur berikut:Jadi, paket apa pun yang saya instal menggunakan
pip install <package-name>
harus tercermin dalam daftar paket ketika daftar diekspor menggunakan:Tapi saya tidak. Jadi, sebagai gantinya saya menggunakan perintah berikut seperti yang disarankan oleh beberapa orang lain:
# 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'
Sekarang, saya dapat melihat semua paket di
all-packages.yml
file saya .sumber
Anda dapat mulai dengan menginstal perintah yang diberikan di bawah ini di lingkungan conda:
conda install pip
Diikuti dengan menginstal semua paket pip yang Anda butuhkan di lingkungan.
Setelah menginstal semua paket conda dan pip untuk mengekspor penggunaan lingkungan:
conda env export -n <env-name> > environment.yml
Ini akan membuat file yang diperlukan di dalam folder
sumber