Apa saja kesulitan menggunakan PIP secara eksklusif di lingkungan CONDA?

Dec 02 2020

Latar Belakang

Dokumentasi resmi dan blog ini di situs yang sama - rekomendasikan untuk menginstal persyaratan sebanyak mungkin denganconda menggunakan pip. Tampaknya ini karena condatidak akan menyadari adanya perubahan pada dependensi yang dibuat oleh pipdan oleh karena itu tidak akan dapat menyelesaikan dependensi dengan benar.

Pertanyaan

Sekarang jika seseorang secara eksklusif menggunakan pipdan pergi tanpa menginstal apa pun dengan conda, tampaknya masuk akal untuk mengharapkan condatidak perlu menyadari perubahan apa pun yang dibuat oleh pip- karena condasecara efektif menjadi alat belaka untuk mengisolasi dependensi dan mengelola versi. Namun, ini bertentangan dengan rekomendasi resmi karena TIDAK akan memasang persyaratan sebanyak mungkinconda .

Jadi pertanyaannya tetap: apakah ada kelemahan yang diketahui dari penggunaan eksklusifpip di condalingkungan?

Topik Serupa

Topik serupa di telah disentuh sedikit di sini tetapi tidak mencakup kasus penggunaan secara eksklusif pipdi condalingkungan. Saya juga pernah ke sini:

  • Alasan khusus untuk memilih pip vs. conda saat menginstal paket Python
  • Apa perbedaan antara pip dan conda?
  • Menggunakan Pip untuk menginstal paket ke Anaconda Environment

Jawaban

2 merv Dec 02 2020 at 03:49

Tidak yakin seseorang dapat memberikan jawaban yang komprehensif tentang ini, tetapi beberapa hal utama yang muncul dalam pikiran adalah:

  1. Kurangnya dukungan mendalam untuk resolusi dependensi non-Python . Sementara lebih banyak roda yang menggabungkan sumber daya non-Python telah tersedia dari waktu ke waktu, itu tidak mendekati cakupan yang disediakan Conda dengan menjadi manajer paket umum daripada khusus Python. Bagi siapa pun yang melakukan komputasi interoperable (misalnya, reticulate), saya berharap Conda lebih disukai.

  2. Perpustakaan yang dioptimalkan . Semacam terkait dengan poin pertama, tetapi tim Anaconda telah berusaha untuk membangun versi paket yang dioptimalkan (misalnya, MKL untuk numpy). Tidak yakin apakah yang setara tersedia melalui PyPI. 1

  3. Redundansi yang boros di seluruh lingkungan . Conda menggunakan tautan keras saat paket dan lingkungan berada pada volume yang sama, dan mendukung tautan lunak untuk mencakup seluruh volume. Ini membantu meminimalkan replikasi paket apa pun yang diinstal di berbagai lingkungan.

  4. Rumit mengekspor . Saat mengekspor ( conda env export) Conda tidak mengambil semua pippaket yang terinstal - hanya paket yang berasal dari PyPI. Artinya, itu akan kehilangan hal-hal yang diinstal dari GitHub, dll. Jika seseorang menggunakan jalur pip saja, saya pikir strategi ekspor yang lebih dapat diandalkan akan digunakan pip freeze > requirements.txt, dan kemudian membuat YAML seperti

    channels:
      - defaults
    dependencies:
      - python=3.8  # specify the version
      - pip
      - pip:
        - -r requirements.txt
    

    yang dapat digunakan untuk menciptakan kembali lingkungan.

Semua yang dikatakan, saya dapat dengan mudah membayangkan bahwa tidak ada masalah ini bagi sebagian orang (kebanyakan dari mereka adalah kemudahan), terutama mereka yang cenderung bekerja murni dengan Python. Dalam kasus seperti itu, bagaimanapun, saya tidak melihat mengapa seseorang tidak akan begitu saja melupakan Conda sama sekali dan menggunakan pengelola lingkungan virtual khusus Python.


[1] Seseorang tolong koreksi saya jika Anda tahu sebaliknya.