Apa cara terbaik untuk menginstal paket Python?

41

Apa cara terbaik untuk menginstal paket Python di Ubuntu 11? Saya baru saja pindah ke Ubuntu dan ingin belajar praktik terbaik.

Untuk konteks, saya mencari untuk menginstal paket tweeststream, tetapi saya tidak melihatnya di manajer paket Synaptic saya. Juga, saya sangat baru dalam pemrograman, tetapi saya biasanya dapat mengikuti contoh kode.

Btibert3
sumber

Jawaban:

30

Saya pikir cara terbaik bagi Anda adalah menginstal sistem pengemasan Python seperti "python-pip". Anda dapat menginstalnya dengan Synaptic atau Ubuntu Software Center.

Pip akan memungkinkan Anda untuk menginstal dan menghapus paket Python dengan mudah, cukup dengan pip install package. Dalam kasus Anda, ini akan menjadi seperti ini dari terminal:

sudo pip install tweeststream
zetah
sumber
3
Ini bagus untuk paket sederhana, tetapi tidak begitu baik untuk paket yang lebih besar misalnya numpy
hayd
@ hayd: mengapa? Apakah itu terkait dengan askubuntu.com/questions/595366/...
naught101
2
@ naught101 Saya pikir saya mungkin berarti cekatan, tidak yakin apakah itu terkait ... sepertinya pip sudah terlambat di jalur python. Saya sangat merekomendasikan menggunakan anaconda / conda, itu jauh lebih unggul daripada pip IMO.
hayd
2
Penggunaan IMHO sudo pip <anything>harus digunakan dengan sangat hati-hati. Karena tweetstreamtidak ada di Pusat Perangkat Lunak Ubuntu , saya sarankan menggunakan virtualenv . tweetstream inisetup.py membutuhkan anyjsonyang merupakan sebuah paket Ubuntu . Tidak menginstal tweetstream di virtualenvdapat menyebabkan aplikasi Ubuntu lain bergantung pada anyjsongagal. Memecahkan masalah dengan keras.
Mark Mikofski
9
Untuk mengulang: jangan gunakan sudo pipdi Ubuntu. @MarkMikofski: Anda tidak perlu virtualenv (kecuali Anda menginginkannya karena alasan tertentu). python -mpip install --user package-namedapat menginstal paket packafe-nameuntuk pengguna saat ini. Jika ada dependensi kompleks (ekstensi C besar); Anda bisa menginstalnya menggunakan apt-get, untuk menghindari menginstal dependensi build kecuali diperlukan.
jfs
37

diperbarui: 2019-05-11: Posting ini sebagian besar menyebutkan virtualenv, tetapi menurut Python doc tentang pemasangan modul , karena Python 3.5 "penggunaan venvsekarang direkomendasikan untuk menciptakan lingkungan virtual", sementara virtualenvmerupakan alternatif untuk versi Python sebelum 3.4 .

diperbarui: 2018-08-17: sejak conda-4.4.0 digunakan condauntuk activateanaconda di semua platform

diperbarui: 2017-03-27: PEP 513 - manylinuxbinari untuk PyPI

diperbarui: 2016-08-19: Opsi Continuum Anaconda

Ini adalah duplikat dari easy_install / pip atau apt-get .

Untuk paket Python global , gunakan Pusat Perangkat Lunak Ubuntu, apt, apt-get atau synaptic

Ubuntu menggunakan Python untuk banyak fungsi penting, oleh karena itu mengganggu Python dapat merusak OS Anda. Ini adalah alasan utama saya tidak pernah menggunakan pippada sistem Ubuntu saya, tetapi saya menggunakan salah Ubuntu Software Center, synaptic , apt-getatau yang lebih baru hanya apt, yang semuanya secara default menginstal paket dari repositori Ubuntu . Paket-paket ini diuji, biasanya pra-dikompilasi sehingga mereka menginstal lebih cepat dan akhirnya dirancang untuk Ubuntu. Selain itu semua dependensi yang diperlukan juga diinstal dan log instalasi dipertahankan sehingga dapat diputar kembali. Saya pikir sebagian besar paket memiliki repos Launchpad yang sesuai sehingga Anda dapat mengajukan masalah.

Alasan lain untuk menggunakan paket Ubuntu adalah kadang-kadang paket Python ini memiliki nama yang berbeda tergantung dari mana Anda mengunduhnya. Python-chardet adalah contoh dari sebuah paket yang pada suatu waktu dinamai satu hal pada PyPI dan satu lagi dalam repositori Ubuntu. Oleh karena itu melakukan sesuatu seperti pip install requeststidak akan menyadari bahwa chardet sudah diinstal di sistem Anda karena versi Ubuntu memiliki nama yang berbeda, dan akibatnya menginstal versi baru yang akan merusak sistem Anda dengan cara yang tidak signifikan tetapi masih mengapa Anda melakukannya.

Secara umum Anda hanya ingin menginstal kode tepercaya ke dalam OS Anda. Jadi, Anda harus gugup mengetik $ sudo pip <anything-could-be-very-bad>.

Terakhir beberapa hal hanya lebih mudah untuk menginstal menggunakan paket Ubuntu. Sebagai contoh jika Anda mencoba pip install numpymenginstal numpy & scipy kecuali Anda telah menginstal gfortran, atlas-dev, blas-dev dan lapack-dev, Anda akan melihat aliran kesalahan kompilasi yang tak berkesudahan. Namun, menginstal numpy & scipy melalui repositori Ubuntu semudah ...

$ sudo apt-get install python-numpy python-scipy

Anda beruntung, karena Anda menggunakan Ubuntu, salah satu distribusi yang paling banyak didukung dan sering diperbarui. Kemungkinan besar setiap paket Python yang Anda perlukan ada di repositori Ubuntu, dan mungkin sudah diinstal pada mesin Anda. Dan setiap 6 bulan, siklus paket baru akan dirilis dengan distribusi Ubuntu terbaru.

Jika Anda 100% yakin bahwa paket tersebut tidak akan mengganggu sistem Ubuntu Anda dengan cara apa pun, maka Anda dapat menginstalnya menggunakan pip dan Ubuntu cukup bagus untuk menjaga paket-paket ini terpisah dari paket distro dengan menempatkan paket-paket distro dalam folder bernama dist-packages/. Repositori Ubuntu memiliki kedua pip, virtualenv dan setuptools. Namun, saya menyarankan saran Wojciech untuk menggunakan virtualenv.

Untuk proyek Python pribadi, gunakan pip dan roda dalam virtualenv

Jika Anda memerlukan versi terbaru, atau modul tidak ada dalam repositori Ubuntu maka mulai virtualenv dan gunakan pip untuk menginstal paket. Meskipun pip dan setuptools telah bergabung, IMO pip lebih disukai daripada instal mudah atau distutil, karena itu akan selalu menunggu sampai paket sepenuhnya diunduh dan dibangun sebelum menyalinnya ke sistem file Anda, dan itu membuat upgrade atau menghapus angin sepoi-sepoi. Dalam banyak hal ini mirip dengan apt-get, karena biasanya menangani dependensi dengan baik. Namun Anda akan mungkin harus menangani beberapa dependensi sendiri, tapi karena PEP 513 diadopsi sekarang ada manylinuxbinari di Paket Indeks Python (PyPI) untuk distro Linux populer seperti Ubuntu dan Fedora .misalnya seperti yang disebutkan di atas untuk NumPy dan SciPy pastikan Anda telah menginstal gfortran, atlas-dev, blas-dev dan lapack-dev dari repositori Ubuntu. Misalnya, NumPy dan SciPy sekarang didistribusikan untuk Ubuntu sebagai manylinuxroda secara default menggunakan OpenBLAS sebagai gantinya dari ATLAS. Anda masih bisa membuatnya dari sumber dengan menggunakan opsi pip --no-use-wheelatau--no-binary <format control> .

~$ sudo apt-get install gfortran libblas-dev liblapack-dev libatlas-dev python-virtualenv
~$ mkdir ~/.venvs
~$ virtualenv ~/.venvs/my_py_proj
~$ source ~/.venvs/my_py_proj/bin/activate
~(my_py_proj)$ pip install --no-use-wheel numpy scipy

Lihat bagian berikutnya, "Anda tidak berada di sudoers", di bawah ini untuk menginstal versi terbaru dari pip, setuptools, virtualenv atau roda ke profil pribadi Anda menggunakan --userskema instalasi dengan pip. Anda dapat menggunakan ini untuk memperbarui pip untuk penggunaan pribadi Anda sebagaimana ditunjukkan JF Sebastian dalam komentarnya untuk jawaban lain . CATATAN: -mini benar-benar hanya diperlukan pada MS Windows saat memperbarui pip .

python -m pip install --user pip setuptools wheel virtualenv

Versi pip yang lebih baru secara otomatis me-cache roda, jadi yang berikut hanya berguna untuk versi pip yang lebih lama. Karena Anda mungkin berakhir menginstal ini berkali-kali, pertimbangkan untuk menggunakan roda dengan pip untuk membuat ruang kemudi. Roda sudah disertakan virtualenvsejak v13.0.0 karena itu jika versi Anda virtualenvterlalu lama, Anda mungkin perlu menginstal roda terlebih dahulu.

~(my_py_proj)$ pip install wheel  # only for virtualenv < v13.0.0
~(my_py_proj)$ pip wheel --no-use-wheel numpy scipy

Ini akan membuat file roda biner <cwd>/wheelhouse, gunakan -duntuk menentukan direktori yang berbeda. Sekarang jika Anda memulai virtualenv lain dan Anda membutuhkan paket yang sama yang sudah Anda buat, Anda dapat menginstalnya dari ruang kemudi Anda menggunakanpip install --find-links=<fullpath>/wheelhouse

Baca Menginstal Modul Python di dokumentasi Python dan Menginstal paket pada halaman utama Indeks Paket Python . Juga pip , venv , virtualenv , dan roda .

Jika Anda tidak masuk sudoersdan virtualenvtidak diinstal.

Opsi lain untuk menggunakan lingkungan virtual, atau jika Anda menggunakan share Linux tanpa hak akses root, maka menggunakan skema instalasi Python --useratau --home=<wherever-you-want>dengan Python distutilsakan menginstal paket dengan nilai site.USERBASEatau ke mana pun Anda inginkan. Versi pip yang lebih baru juga memiliki --useropsi. Jangan gunakan sudo!

pip install --user virtualenv

Jika versi Linux dari pip Anda terlalu tua, maka Anda dapat meneruskan opsi pengaturan menggunakan --install-optionyang berguna untuk meneruskan opsi kustom ke beberapa setup.pyskrip untuk beberapa paket yang membangun ekstensi, seperti mengatur PREFIX. Anda mungkin perlu mengekstrak distribusi dan menggunakannya distutilsuntuk menginstal paket dengan cara old-school dengan mengetik python setup install [options]. Membaca beberapa dokumentasi instalasi dan distutilsdokumentasi dapat membantu.

Python cukup bagus untuk ditambahkan di depan site.USERBASEAnda PYTHONPATHdari hal lain, jadi perubahan hanya akan berpengaruh pada Anda. Lokasi populer --homeadalah ~/.local. Lihat panduan instalasi modul Python untuk struktur file yang tepat dan secara khusus di mana paket situs Anda berada. Catatan : jika Anda menggunakan --homeskema instalasi maka Anda mungkin perlu menambahkannya ke PYTHONPATHvariabel lingkungan yang digunakan exportdi Anda .bashrc, .bash_profileatau di shell Anda agar paket lokal Anda tersedia dengan Python.

Gunakan Continuum Anaconda Python untuk Matematika, Sains, Data, atau Proyek Pribadi

Jika Anda menggunakan Python untuk matematika, sains, atau data, maka IMO pilihan yang sangat bagus adalah Distribusi Anaconda-Python atau distro miniconda yang lebih mendasar yang dirilis oleh Anaconda, Inc. (sebelumnya dikenal sebagai Continuum Analytics ) . Meskipun siapa pun dapat mengambil manfaat dari menggunakan Anaconda untuk proyek-proyek pribadi, instalasi default mencakup lebih dari 500 paket matematika dan sains seperti NumPy, SciPy, Pandas, dan Matplotlib , sementara miniconda hanya menginstal Anaconda-Python dan manajer lingkungan conda. Anaconda hanya menginstal ke dalam profil pribadi Anda, yaitu: /home/<user>/ dan mengubah ~/.bashrcatau ~/.bash_profileuntuk menambahkan alur Anaconda ke $PATH rekomendasi sumber pribadi Andaconda.shdi Anda ~/.bashrcyang memungkinkan Anda gunakan conda activate <env|default is base>untuk memulai anaconda - ini hanya mempengaruhi Anda - jalur sistem Anda tidak berubah . Karena itu Anda tidak perlu akses root atau sudomenggunakan Anaconda! Jika Anda telah menambahkan Anaconda-Python, miniconda, atau conda ke jalur pribadi Anda, maka Anda harus menghapus PATHekspor dari Anda ~/.bashrc, dan memperbarui ke rekomendasi baru , sehingga sistem Anda Python akan menjadi yang pertama lagi.

Ini agak mirip dengan --useropsi yang saya jelaskan di bagian terakhir kecuali itu berlaku untuk Python secara keseluruhan dan bukan hanya paket. Oleh karena itu Anaconda benar-benar terpisah dari sistem Anda Python , itu tidak akan mengganggu sistem Anda Python, dan hanya Anda yang dapat menggunakan atau mengubahnya. Karena menginstal versi baru Python dan semua pustaka, Anda memerlukan setidaknya 200MB ruang, tetapi sangat pintar tentang caching dan mengelola pustaka yang penting untuk beberapa hal keren yang dapat Anda lakukan dengan Anaconda.

Anaconda mengumpulkan koleksi binari dan pustaka Python yang dibutuhkan oleh dependensi dalam repositori online (sebelumnya disebut binstar ) , dan mereka juga meng-host paket pengguna sebagai "saluran" yang berbeda. Manajer paket yang digunakan oleh Anaconda,, condasecara default menginstal paket dari Anaconda, tetapi Anda dapat memberi sinyal "saluran" yang berbeda menggunakan -copsi.

Instal paket dengan condaseperti pip:

$ conda install -c pvlib pvlib  # install pvlib pkg from pvlib channel

Tetapi condabisa melakukan lebih banyak lagi! Itu juga dapat membuat dan mengelola lingkungan virtual seperti virtualenv. Oleh karena itu sejak Anaconda menciptakan lingkungan virtual, pipmanajer paket dapat digunakan untuk menginstal paket dari PyPI ke dalam lingkungan Anaconda tanpa root atau sudo. Jangan tidak menggunakan sudodengan Anaconda! Peringatan! Berhati-hatilah saat mencampur pipdan condadalam lingkungan Anaconda, Anda harus mengatur dependensi paket dengan lebih hati-hati. Pilihan lain untuk pipdalam lingkungan conda adalah menggunakan saluran conda-forge, tetapi juga yang terbaik untuk melakukannya di lingkungan conda baru dengan conda-forge sebagai saluran default. Sebagai upaya terakhir, jika Anda tidak dapat menemukan paket di mana pun kecuali di PyPI, pertimbangkan untuk menggunakan --no-depslalu instal dependensi yang tersisa secara manual conda.

Anaconda juga mirip dalam beberapa hal dengan Ruby RVM jika Anda terbiasa dengan alat itu. Anaconda condajuga memungkinkan Anda membuat lingkungan virtual dengan berbagai versi Python . misalnya : conda create -n py35sci python==3.5.2 numpy scipy matplotlib pandas statsmodels seabornakan membuat tumpukan ilmiah / data-sains menggunakan Python-3.5 di lingkungan baru yang disebut py35sci. Anda dapat beralih lingkungan menggunakan conda. Sejak conda-4.4.0, ini sekarang berbeda dengan virtualenvyang menggunakan source venv/bin/activate, tapi sebelumnya conda-4.4.0 yang condaperintah adalah sama seperti virtualenvdan juga digunakan source:

# AFTER conda-4.4 
~/Projects/myproj $ conda activate py35sci

# BEFORE conda-4.4 
~/Projects/myproj $ source activate py35sci

Tapi tunggu, masih ada lagi! Anaconda juga dapat menginstal berbagai bahasa seperti R untuk pemrograman statistik dari saluran Anacondar . Anda bahkan dapat mengatur saluran Anda sendiri untuk mengunggah distribusi paket yang dibuat untuk konda . Seperti yang disebutkan conda-forge mempertahankan build otomatis dari banyak paket pada PyPI di conda-forge Anaconda channel .

Epilog

Ada banyak opsi untuk memelihara proyek Python Anda di Linux tergantung pada kebutuhan dan akses pribadi Anda. Namun, jika ada satu hal yang saya harap Anda ambil dari jawaban ini adalah Anda seharusnya hampir tidak perlu menggunakan sudountuk menginstal paket Python . Penggunaan sudoharus menjadi bau bagi Anda bahwa ada sesuatu yang salah. Anda telah diperingatkan.

Semoga sukses dan selamat coding!

Mark Mikofski
sumber
Saya berharap saya akan membaca ini sebelum saya menghancurkan distribusi Python sistem saya dengan sudoberkeliling pip. Langgan yang hebat, terima kasih atas informasi ini.
slhck
pip install numpyharus menginstal semua dependensi
Timo
@Timo seperti yang saya sebutkan dalam pembaruan 2017-03-27 sejak PEP 513 diimplementasikan oleh banyak binux numpy binary tersedia di PyPI yang dibangun dengan OpenBLAS, yaitu : mereka memiliki dependensi yang diperlukan. Namun sebagai aturan, pip install <package>hanya akan menginstal dependensi paket Python yang tercantum di install_requiresbagian setup.py. Sebagai contoh: menginstal Jupyter tidak akan menginstal pandoc perpustakaan Haskell untuk mengekspor notebook Jupyter sebagai LaTeX, dll.
Mark Mikofski
Sebaliknya conda install <package>mungkin akan menginstal semua dependensi, termasuk C / C ++, FORTRAN, dll, bahkan pustaka Haskell, karena conda tidak hanya mengelola paket Python seperti pip, ia mengelola lingkungan. Jadi, jika Anda memiliki Anaconda atau miniconda kemudian conda install Jupytermenginstal segala sesuatu di resep ini meta.ymlberkas , termasuk para Pandoc Haskell perpustakaan . Untuk info lebih lanjut lihat PyPA
Mark Mikofski
10

Selain penambahan Novarchibald, umumnya merupakan ide bagus untuk membuat lingkungan virtual untuk proyek python Anda dan menginstal dependensi di dalamnya. Ini memungkinkan Anda untuk memiliki kontrol yang lebih baik atas dependensi dan versinya. Untuk mengatur lingkungan virtual, masukkan:

virtualenv --no-site-packages --distribute my_python_project

Kemudian, aktifkan dengan:

cd my_python_project
source bin/activate

Pada titik ini apa pun yang Anda instal dengan pip akan disimpan di dalam lingkungan virtual ini. Jika Anda ingin menginstal sesuatu secara global, maka Anda harus keluar dari virtualenv dengan:

deactivate

Anda dapat mengetahui lebih lanjut tentang virtualenv di sini .

Voitek Zylinski
sumber
1
Atau: menggunakan pip dari direktori virtualenv bin (di sini my_python_project / bin / pip) Anda mempertahankan lingkungan itu, tanpa perlu "mengaktifkan" itu. Kemudian - menggunakan skrip yang terinstal di dalam bin menggunakan virutalenv yang diberikan. "aktifkan" hanya berguna untuk melakukan panggilan ke "python", "easy_install" dan "pip" menggunakan virtualenv spesifik bin.
Jan Vlcinsky
Dokumen instalasi Python mengatakan untuk menggunakan "pyvenv" untuk membuat lingkungan virtual khusus untuk suatu proyek; tetapi virtualenv itu mundur untuk proyek yang menggunakan versi python yang lebih lama, docs.python.org/3/installing/index.html?highlight=pip .
pbhj
2
Perhatikan bahwa virtualenvopsi --no-site-packagesdan --distributesudah usang saat ini dan tidak berpengaruh lagi.
Hijauan
4

Selain jawaban Zetah'a, perintah untuk menginstal python-pip dari terminal adalah:

sudo apt-get install python-pip
Novarchibald
sumber
1

Coba kerangka kerja GUI ini untuk PIP yang dikembangkan menggunakan PyQt4

Kerangka kerja GUI untuk PIP dikembangkan menggunakan PyQt4

Layar Mulai

masukkan deskripsi gambar di sini

Layar mulai berisi opsi bagi pengguna untuk memilih proses yang ingin dilakukan.

Kita juga dapat menentukan versi python yang dia inginkan untuk dijalankan.

Menu file memiliki opsi untuk "Keluar" (pintasan: Ctrl + Q) dan "Segarkan Daftar" yang menyegarkan file sumber daya yang berisi data paket.

Layar Instalasi

masukkan deskripsi gambar di sini

Layar instalasi memiliki bilah pencarian yang dapat digunakan pengguna untuk mencari dan menginstal paket yang diinginkan.

Layar Pembaruan

masukkan deskripsi gambar di sini

Layar pembaruan menampilkan daftar paket yang kedaluwarsa dan dapat ditingkatkan.

Copot Instalasi Screem

masukkan deskripsi gambar di sini

Layar uninstall menampilkan daftar paket yang diinstal di sistem pengguna dan dapat dihapus.

Jendela Kemajuan

masukkan deskripsi gambar di sini

Jendela progres adalah widget terminal bawaan untuk PIP-GUI yang menampilkan proses yang berjalan saat melakukan operasi.

gavisic
sumber
1
Selamat Datang di Tanya Ubuntu! Sementara ini secara teoritis dapat menjawab pertanyaan, akan lebih baik untuk memasukkan bagian-bagian penting dari jawaban di sini, dan menyediakan tautan untuk referensi.
Kevin Bowen