Menggunakan pip vs. MacPorts untuk menginstal paket Python

12

Saya dapat menginstal paket python ( misalnya , numpy) di Mac saya melalui Macports:

port install py-numpy

atau melalui pip:

pip install numpy

Apa pro / kontra umum dari setiap pendekatan? Kapan setiap pendekatan harus digunakan?

  • Kapan saya harus memilih yang satu daripada yang lain?
  • Apakah penting apakah paket yang saya instal kecil atau besar (mis. numpy)?
  • Apakah ini tergantung pada versi python yang saya gunakan ( 2.xvs. 3.x, atau Apple pythonvs MacPort python)?
  • Apakah penting apakah saya memiliki beberapa versi yang pythondiinstal pada Mac saya?
  • Bisakah mereka digunakan bersamaan?

Saya berharap jawaban yang memiliki daftar pendek beberapa pro / kontra dari setiap pendekatan dengan beberapa diskusi tentang kapan harus memilih satu dari yang lain.

jvriesem
sumber
Terkait, tetapi terlalu spesifik: stackoverflow.com/questions/16895282/… . Saya meminta paket python umum, bukan hanya matplotlib.
jvriesem
AFAIK ini sudah diinstal - Anda dapat memeriksa di terminal:> python dan perintah selanjutnya> import numpy sebagai np dan jika tidak ada kesalahan maka Anda memilikinya. Solusi alternatif adalah menggunakan anaconda dari continuum.io/downloads - memiliki banyak fitur dan instalasi lebih lanjut dengan pip akan masuk ke folder anaconda Anda.
Yoan
@Yoan: numpyhanyalah sebuah contoh. Saya bertanya tentang instalasi paket secara umum.
jvriesem

Jawaban:

3

Mereka dapat digunakan secara bersamaan, dan seharusnya tidak ada masalah antara mencampur keduanya (dengan satu peringatan agak besar dan gotcha ...)

Peringatan

Peringatannya adalah bahwa macports / homebrew dan pip tidak akan memiliki kesadaran masing-masing telah menginstal vs yang lain.

Jadi, misalnya, katakanlah Anda menginstal python 3.6 di Mac Anda. Anda ingin nltk, yang secara teknis tidak tersedia untuk versi itu di Macports, tetapi itu ada di pip. Jadi Anda menginstal pada pip. Dua bulan kemudian, Anda melihat diinstal di Macports dan memilih untuk menginstalnya. Sekarang Anda memiliki dua versi berbeda nltkpada mesin Anda, jadi emptor peringatan .

Gotcha

Jika Anda menggunakan pip dengan Macports, Anda perlu memastikan bahwa itu adalah pip yang diinstal melalui Macports dan dikaitkan dengan versi python itu. Jadi, misalnya, Anda akan melihat py35-pip, py36-pip, dll.

Setelah Anda menginstal pip yang tepat, Anda menggunakan selectperintah Macports untuk memastikan bahwa itu diaktifkan dengan versi python yang sesuai:

sudo port select
Rob M.
sumber
Pengalaman saya adalah menginstal modul ke area global Python yang dibuat oleh MacPorts menyebabkan konflik. Cepat atau lambat, MacPorts akan mencoba menginstal port yang telah Anda instal dengan pip. Ini akan mengeluarkan pesan kesalahan tentang file di port yang ada tetapi tidak diinstal oleh MacPorts. Saya pikir jawaban @ IanC lebih baik: instal ke area Python global hanya menggunakan MacPorts, instal dalam lingkungan virtual menggunakan pip saja.
Jim DeLaHunt
4

Anda harus menggunakan pipkarena itu adalah alat asli-Python untuk mengelola instalasi paket tetapi Anda tidak boleh memasang-instal sesuatu ke dalam instalasi Python dasar Anda. Mungkin berantakan jika harus memilah dependensi versi tetap antara beberapa repositori perangkat lunak jika Anda menginstal semuanya ke dalam instalasi Python dasar di mesin Anda.

Sebagai gantinya, Anda harus mem-instal virtualenv dan kemudian menggunakannya untuk mengelola instalasi Python virtual yang berbeda dan semua paket paket yang diinstal pip untuk semua lingkungan virtual.

Ini memungkinkan Anda untuk beralih dari bekerja dengan, katakanlah, beautifulsoup1.x dalam satu repositori perangkat lunak ke beautifulsoup2.x dalam repositori lain tanpa harus menyeberang melalui neraka manajemen ketergantungan.

Ian C.
sumber
0

Saya baru saja melakukan tes cepat mencari paket yang sama menggunakan Homebrew , MacPorts dan pip3 :

brew search numpy
sudo port search --name --glob '*numpy'
pip3 search numpy

MacPorts dan pip3 memiliki paket yang sama (versi 1.18.1 ), sedangkan Homebrew memiliki versi 1.16 .

Saat berkolaborasi dengan orang lain, paling baik menyepakati bagaimana lingkungan pengembangan Anda dikonfigurasi atau Anda akan mulai menabrak anomali dan mendapatkan hasil tes yang berbeda. Oleh karena itu, alat terbaik adalah yang Anda semua setujui ;-)

F1Linux
sumber