Python paketlerini kurmanın en iyi yolu nedir?


41

Python paketlerini Ubuntu 11'e kurmanın en iyi yolu nedir? Son zamanlarda Ubuntu'ya dönüşüyorum ve en iyi uygulamaları öğrenmek istiyorum.

Bağlam olarak, tweeststream paketini kurmayı düşünüyorum, ancak Synaptic paket yöneticimde görmedim. Ayrıca, programlama için çok yeniyim, ancak genellikle kod örnekleri ile birlikte takip edebilirim.


Yanıtlar:


30

Sanırım sizin için en iyi yol Python paketleme sistemini "python-pip" gibi yüklemek. Synaptic veya Ubuntu Software Center ile kurabilirsiniz.

Pip, Python paketlerini kolayca kurmanızı ve kaldırmanızı sağlar pip install package. Senin durumunda terminalden böyle bir şey olurdu:

sudo pip install tweeststream

3
Bu basit paketler için iyidir, ancak daha büyük paketler için o kadar iyi değildir. Örneğin, numpy
hayd


2
@ naught101 Sanırım muhtemelen scipy demek istedim, konuyla ilgili olup olmadığından emin değilim ... pip piton yolunda çok geç kalmış gibi görünüyor. Anaconda / conda kullanmanızı şiddetle tavsiye ediyorum, pip IMO'dan çok daha üstün.
15'te hayd

2
IMHO sudo pip <anything>kullanımı çok dikkatli kullanılmalıdır. Yana tweetstreamdeğil Ubuntu Yazılım Merkezi'nde , ben kullanmanızı tavsiye VIRTUALENV . tweetstream ensetup.py gerektiren anyjsonhangi olduğu bir Ubuntu Paketi . Tweetstream'i a'ya yüklememek, virtualenvbağımlı olan diğer Ubuntu uygulamalarının anyjsonbaşarısız olmasına neden olabilir . Sıkıntı giderme
Mark Mikofski 30:15

9
Tekrarlamak için: sudo pipUbuntu'da kullanmayın . @MarkMikofski: sanalenv'e ihtiyacınız yok (belirli bir nedenden dolayı istemediğiniz sürece). mevcut kullanıcı python -mpip install --user package-nameiçin paketi kurabilir packafe-name. Karmaşık (büyük C uzantıları) bağımlılıklar varsa; apt-getgerekli olmadıkça yapı bağımlılıklarını kurmamak için bunları kullanarak kurabilirsiniz .
jfs

37

Güncellenme Tarihi: 2019-05-11: Bu yazı çoğunlukla bahseder virtualenv, ancak Python belgesine göre, modül kurulumuyla ilgili Python 3.5 " venvsanal ortamlar oluşturmak için kullanımı artık tavsiye edilir " den beri virtualenv, 3.4 öncesi Python sürümleri için bir alternatiftir. .

güncelleme: 2018-08-17: beri Conda-4.4.0 kullanım condaiçin activatetüm platformlarda Kobrayla

güncellendi: 2017-03-27: PEP 513 - manylinuxPyPI için ikili dosyalar

güncellendi: 2016-08-19: Continuum Anaconda Seçeneği

Bu bir şekilde bir easy_install / pip veya apt-get kopyasıdır .

İçin küresel Python paketleri, kullanım ya Ubuntu Yazılım Merkezi apt apt-get veya sinaptik

Ubuntu, Python'u birçok önemli işlev için kullanır, bu nedenle Python'a müdahale etmek işletim sisteminizi bozabilir. Bu kullandığım asla ana sebebi pipbenim Ubuntu sisteminde, ama bunun yerine kullanmak ya Ubuntu Yazılım Merkezi, sinaptik , apt-getya daha yeni sadece apt, tümü varsayılan olarak gelen paketleri yükleme hangi Ubuntu depo . Bu paketler test edilir, genellikle önceden derlenir, böylece daha hızlı kurulurlar ve sonunda Ubuntu için tasarlanırlar. Ek olarak, gerekli tüm bağımlılıklar da kurulur ve geri yüklenmeleri için bir yükleme günlüğü tutulur. Çoğu paketin Launchpad repolarına sahip olduğunu düşünüyorum, böylece sorunları dosyalayabilirsiniz .

Her iki Ubuntu paketini kullanmanın bir başka nedeni de, bazen bu Python paketlerinin, nereden indirdiğinize bağlı olarak farklı isimlere sahip olmasıdır. Python-chardet, bir zamanlar PyPI'de bir şey ve Ubuntu deposunda bir başka şey adı verilen bir paket örneğidir. Bu nedenle pip install requests, Ubuntu sürümü farklı bir isme sahip olduğundan, chardet'in sisteminizde zaten kurulu olduğunu farketmeyeceksiniz ve sonuç olarak sisteminizi küçük önemsiz bir şekilde bozacak ama yine de neden bunu yapacaksınız.

Genel olarak, güvenilir kodu yalnızca işletim sisteminize yüklemek istiyorsunuz. Bu yüzden yazarken gergin olmalısın$ sudo pip <anything-could-be-very-bad> .

Son olarak bazı şeylerin Ubuntu paketlerinden herhangi birinin kullanılmasıyla daha kolaydır. Örneğin pip install numpy, gfortran, atlas-dev, blas-dev ve lapack-dev'i yüklemediğiniz sürece numpy & scipy'yi yüklemeye çalışırsanız, sonsuz bir derleme hatası akışı göreceksiniz. Ancak, Ubuntu deposu üzerinden numpy & scipy kurmak ...

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

Şanslısınız, çünkü varolan en yaygın olarak desteklenen ve güncellenen dağıtımlardan biri olan Ubuntu kullanıyorsunuz. Büyük olasılıkla ihtiyaç duyacağınız her Python paketi Ubuntu deposunda ve muhtemelen zaten makinenize kurulmuş durumda. Her 6 ayda bir, Ubuntu’nun son dağıtımıyla yeni bir paket döngüsü çıkacak.

% 100 paketin Ubuntu sisteminize herhangi bir şekilde müdahale etmeyeceğinden eminseniz, pip kullanarak yükleyebilirsiniz ve Ubuntu, dağıtım paketlerini adı verilen bir klasöre yerleştirerek bu paketleri dağıtım paketlerinden ayrı tutmak için yeterince güzeldir. dist-packages/. Ubuntu deposunda hem pip, virtualenv hem de setuptools bulunur. Bununla birlikte, ikinci Wojciech'in virtualenv'i kullanmasını önerdim.

İçin kişisel Python projelerinde bir virtualenv Pip ve tekerleği kullanın

En son sürüme ihtiyacınız varsa veya modül Ubuntu deposunda değilse, bir sanal aygıt başlatın ve paketi yüklemek için pip kullanın. Her ne kadar pip ve setuptools birleştiyse de, IMO pip kolay kurulum veya distutils yerine tercih edilir, çünkü paket dosya sisteminize kopyalanmadan önce paket tamamen indirilip inşa edilinceye kadar her zaman bekler ve bir esinti yükseltme veya kaldırır. Birçok yönden apt-get'e benzer, çünkü genellikle bağımlılıkları iyi idare eder. Bununla birlikte , bazı bağımlılıkları kendiniz halletmeniz gerekebilir , ancak PEP 513 kabul edildiğinden beri , şimdi manylinuxUbuntu ve Fedora gibi popüler Linux dağıtımları için Python Paket Endeksi'nde (PyPI) ikili dosyalar var .Örneğin numpy ve SciPy için yukarıda yapmak belirtildiği gibi Ubuntu depolarından yüklediğinizden emin gfortran, atlas-dev, blas-dev ve LAPACK-dev Örneğin, her iki NumPy ve scipy artık Ubuntu için dağıtılan manylinuxtekerlekler varsayılan tarafından kullanılarak OpenBLAS yerine ATLAS'ın Hala kullanarak kaynaktan bunları inşa edebilirsiniz pip seçenekleri --no-use-wheelya--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

sudoersPip ile kurulum şemasını kullanarak pip, setuptools, virtualenv veya jantların güncellenmiş versiyonlarını kişisel profilinize yüklemek için aşağıdaki "Girişinde değilsiniz" bölümüne bakın --user. Pip'i kişisel kullanımınız için JF Sebastian'ın yaptığı açıklamada belirtildiği gibi başka bir yanıtla güncellemek için kullanabilirsiniz . NOT: -mpip güncelleştirirken gerçekten yalnızca MS Windows'ta gereklidir .

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

Pip'in yeni sürümleri tekerlekleri otomatik olarak önbelleğe alır; bu nedenle aşağıdakiler yalnızca eski pip sürümleri için yararlıdır. Bunları defalarca takmanız gerekebileceğinden, bir tekerlek yuvası oluşturmak için pipolu tekerlek kullanmayı düşünün. Tekerlek, virtualenvv13.0.0’dan beri zaten dahil edilmiştir, bu nedenle sürümünüz virtualenvçok eskiyse, önce tekerleği takmanız gerekebilir.

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

Bu, farklı bir dizin belirtmek için <cwd>/wheelhousekullanılacak ikili tekerlek dosyaları yaratacaktır -d. Şimdi başka bir sanal aygıt başlattıysanız ve daha önce oluşturduğunuz aynı paketlere ihtiyacınız varsa, bunları kullanarak tekerlekli evinizden yükleyebilirsiniz.pip install --find-links=<fullpath>/wheelhouse

Python belgelerine Python Modüllerini Kurma ve Python Paket Dizini ana sayfasındaki paketleri kurma bölümünü okuyun . Ayrıca pip , venv , virtualenv ve tekerlek .

İçeride değilseniz sudoersve virtualenvyüklenmemişseniz.

Sanal ortam kullanmak için ya da root ayrıcalıklarına sahip olmayan bir Linux paylaşımı kullanıyorsanız, ya --userda --home=<wherever-you-want>Python kurulum şemalarını Python ile distutilskullanmak, paketleri istediğiniz değere site.USERBASEya da istediğiniz yere kurar . Pip'in daha yeni sürümleri de bir --userseçeneğe sahiptir. Kullanmayın sudo!

pip install --user virtualenv

Eğer Pip'in Linux sürümü çok eskiyse, ayarların ayarlanması gibi uzantıları oluşturan bazı paketlerin --install-optionözel seçeneklerinin bazı setup.pykomut dosyalarına geçirilmesinde yararlı olan kurulum seçeneklerini kullanabilirsiniz PREFIX. Dağıtımı ayıklamanız ve distutilspaketi eski okul biçimini yazarak yüklemek için kullanmanız gerekebilir python setup install [options]. Bazı okuma belgeleri kurar ve distutilsdokümantasyon yardımcı olabilir.

Python eklemek için güzel yeterlidir site.USERBASEsizin için PYTHONPATHdeğişiklikler sadece seni etkileyecek böylece, başka bir şey önden. İçin popüler bir yer --homeolduğunu ~/.local. Tam dosya yapısı ve özellikle site paketlerinizin bulunduğu yer için Python modülü kurulum kılavuzuna bakın . Not : Kullanmak eğer --homekurulum şemasını ardından eklemek gerekebilir PYTHONPATHkullanarak ortam değişkeni exportsenin içinde .bashrc, .bash_profilePython kullanılabilir olması yerelleştirilmiş paketleri veya kabuğunda.

Matematik, Bilim, Veri veya Kişisel Projeler için Continuum Anaconda Python Kullanın

Matematik, fen bilgisi veya veri için Python kullanıyorsanız, IMO gerçekten iyi bir seçenek Anaconda-Python Dağıtımı veya Anaconda, Inc. (daha önce Continuum Analytics olarak da bilinir ) tarafından yayımlanan daha temel miniconda dağıtımıdır . Herkes Anaconda'yı kişisel projeler için kullanmaktan faydalanabilse de , varsayılan kurulum NumPy, SciPy, Pandas ve Matplotlib gibi 500'den fazla matematik ve bilim paketi içerirken , miniconda sadece Anaconda-Python ve conda çevre yöneticisini kurar. Anaconda sadece kendi kişisel profiline giriyor, yani: ve Anaconda'nın kişisel yoluna gitmeni önlüyor ya da değiştirmeni tavsiye etmeni tavsiye ediyor /home/<user>/~/.bashrc~/.bash_profile$PATH conda.shsenin içinde ~/.bashrchangi kullanmanızı sağlar conda activate <env|default is base>anaconda başlatmak için - bu sadece etkiler sizi - sistem yolu değişmez . Bu nedenle sen do not kök erişimi ya da ihtiyaç sudoAnaconda kullanmak! Zaten kişisel yoluna Anaconda-Python, miniconda veya Conda eklediyseniz, ardından kaldırmak gerekir PATH, hesabınızla ilgili ihracat ~/.bashrciçin ve güncelleştirme yeni öneri sistem Python yine birinci olacak, böylece.

Bu, --userson bölümde açıkladığım seçeneğe biraz benziyor, ancak Python için yalnızca paketler için geçerli değil. Bu nedenle Anaconda, sistem Python'dan tamamen ayrıdır, sistem Python'unuzu etkilemez ve yalnızca onu kullanabilir veya değiştirebilirsiniz. Yeni bir Python sürümü ve tüm kitaplıklarını yüklediğinden, en az 200 MB odaya ihtiyacınız olacaktır, ancak Anaconda ile yapabileceğiniz harika şeyler için önemli olan kitaplıkları önbelleğe almak ve yönetmek için çok zekicedir.

Anaconda, çevrimiçi bir depoda (eski adıyla binstar ) bağımlılıkların gerektirdiği bir Python ikili dosyaları ve kitaplıkları koleksiyonuna sahiptir ve ayrıca kullanıcı paketlerini farklı "kanallar" olarak barındırmaktadır. Anaconda tarafından kullanılan paket yöneticisi conda, varsayılan olarak Anaconda'dan paket yükler, ancak -cseçeneği kullanarak farklı bir "kanal" işaret edebilirsiniz .

Paketleri condaaynen pipşöyle yükleyin :

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

Ama condaçok daha fazlasını yapabilir! Aynı zamanda olduğu gibi sanal ortamlar yaratabilir ve yönetebilir virtualenv. Bu nedenle, Anaconda sanal ortamlar yarattığından, pippaket yöneticisi, paketleri PyPI'den bir Anaconda ortamına kök ya da olmadan yüklemek için kullanılabilir sudo. Do not kullanmak sudoAnaconda ile! Uyarı! Karışım sırasında pipve condabir Anaconda ortamında, ambalaj bağımlılıklarını daha dikkatli yönetmeniz gerekecek olsa bile dikkatli olun. pipConda ortamında başka bir seçenek conda forge kanalını kullanmaktır.ve aynı zamanda bunu varsayılan kanal olarak conda-forge ile taze bir conda ortamında yapmak için de en iyisidir. Son çare olarak, PyPI dışında hiçbir yerde bir paket bulamıyorsanız, kullanmayı düşünün --no-depsve kalan bağımlılıkları manuel olarak kullanarak kurun conda.

Anaconda aynı zamanda bu araca aşina iseniz , Ruby RVM'ye bazı şekillerde benzer . Anaconda condaayrıca, farklı Python sürümleriyle sanal ortamlar oluşturmanıza da olanak sağlar . örneğin : conda create -n py35sci python==3.5.2 numpy scipy matplotlib pandas statsmodels seabornPython-3.5 kullanarak yeni bir ortamda bilimsel / veri bilimi yığını oluşturacak py35sci. Kullanarak ortamları değiştirebilirsiniz conda. Conda-4.4.0 beri bu şimdi farklı etmek virtualenvhangi kullanımlara source venv/bin/activatekarşı, ancak önceki Conda-4.4.0conda komutları vardı aynı şekilde virtualenvve aynı zamanda kullanılan source:

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

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

Ama bekleyin dahası var! Anaconda , Anaconda kanalından istatistiksel programlama için R gibi farklı diller de kurabilir . Conda için oluşturulmuş paket dağıtımlarını yüklemek için kendi kanalınızı bile ayarlayabilirsiniz . Conda-forge , belirtildiği gibi , conda-forge Anaconda kanalında PyPI üzerindeki birçok paketin otomatik yapımını sürdürmektedir .r

son söz

Kişisel gereksinimlerinize ve erişiminize bağlı olarak Python projelerinizi Linux'ta sürdürmek için birçok seçenek vardır. Bununla birlikte, bu cevabdan alacağınızı umduğum bir şey varsa Python paketlerini yüklemek için neredeyse hiç kullanmanıza gerek kalmamasıdırsudo . Kullanımı, sudobir şeylerin yanlış gittiği konusunda size bir koku olmalıdır . Uyarıldın.

İyi şanslar ve mutlu kodlama!


Keşke ben de sistemimin Python dağıtımını sudobaşa çıkarak yok etmeden önce okuyabilseydim pip. Harika yazı, bu bilgi için teşekkürler.
slhck

pip install numpytüm bağımlılıkları kurmalı
Timo

@ PEP 513 manylinux tarafından yazılmış olduğundan beri 2017-03-27 güncellemesinde bahsettiğim rakam ikili parolalar OpenBLAS ile inşa edilen PyPI'de mevcut, yani : gerekli bağımlılıklara sahipler. Ancak bir kural olarak, pip install <package>yalnızca install_requiresbölümünde listelenen Python paket bağımlılıklarını kuracaktır setup.py. Örneğin: Jupyter'i kurmak , Jupyter not defterlerini LaTeX gibi ihraç etmek için Haskell kütüphane pandoc'unu kurmayacak
Mark Mikofski,

Buna karşın conda install <package>muhtemelen C / C ++, FORTRAN vb. Dahil tüm bağımlılıkları da Haskell kütüphaneleri kuracak, çünkü conda sadece pip gibi Python paketlerini yönetmediği için ortamları da yönetiyor. Yani eğer Anaconda veya miniconda kullanıyorsanız , pandoc Haskell kütüphanesi de dahil olmak üzere , tarif dosyasındakiconda install Jupyter her şeyi yükler . Daha fazla bilgi için bkz PyPAmeta.yml
Mark Mikofski

10

Novarchibald'ın ilavesine ek olarak, python projeniz için sanal bir ortam oluşturmak ve bağımlılıkları kurmak genellikle iyi bir fikirdir. Bu, bağımlılıklar ve sürümleri üzerinde daha iyi kontrol sahibi olmanızı sağlar. Sanal bir ortam oluşturmak için şunu girin:

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

Ardından, şununla etkinleştir:

cd my_python_project
source bin/activate

Bu noktada pip ile kurduğunuz her şey bu sanal ortamda tutulacaktır. Global olarak bir şey yüklemek istiyorsanız, önce sanalenv ile çıkmalısınız:

deactivate

Virtualenv hakkında daha fazla bilgiyi burada bulabilirsiniz .


1
Alternatif olarak: pip işlevini virtualenv bin dizininden (burada my_python_project / bin / pip) kullanarak o ortamı korursunuz, "etkinleştirmeye" gerek kalmaz. Sonra - bin yüklü yüklü herhangi bir komut dosyası kullanarak verilen virutalenv kullanıyor. "activate", yalnızca "python", "easy_install" ve "pip" e sanalenv'e özel bölmeyi kullanarak arama yapmak için kullanışlıdır.
Jan Vlcinsky

Python'un yükleme belgeleri, bir projeye özgü sanal ortamlar oluşturmak için "pyvenv" kullandığını söylüyor; ancak bu sanalenv , eski python sürümünü kullanan projeler için bir geri dönüş, docs.python.org/3/installing/index.html?highlight=pip .
pbhj

2
O Not virtualenvseçenekleri --no-site-packagesve --distributegünümüzde kullanımdan kaldırılmış ve artık hiçbir etkisi vardır.
Yem

4

Zetah'a cevabına ek olarak, terminalden python-pip yüklemek için komut:

sudo apt-get install python-pip

1

PyQt4 kullanılarak geliştirilen PIP için bir GUI çerçevesi deneyin

PyQt4 kullanılarak geliştirilen PIP için bir GUI çerçevesi

Başlangıç ​​Ekranı

görüntü tanımını buraya girin

Başlangıç ​​ekranı, kullanıcının yapmak istediği süreci seçmesi için seçenekler içerir.

Biri ayrıca işlemlerin gerçekleştirilmesini istediği python sürümünü de belirleyebilir.

Dosya menüsünde "Çık" (kısayol: Ctrl + Q) ve paket verilerini içeren kaynak dosyalarını tazeleyen "Listeleri Yenile" seçeneği bulunur.

Kurulum ekranı

görüntü tanımını buraya girin

Kurulum ekranında, kullanıcının istediği paketleri aramak ve kurmak için kullanabileceği bir arama çubuğu vardır.

Güncelleme Ekranı

görüntü tanımını buraya girin

Güncelleme ekranı, güncel olmayan ve yükseltilebilecek paketlerin listesini görüntüler.

Kaldırma Ekranı

görüntü tanımını buraya girin

Kaldırma ekranı, kullanıcının sisteminde kurulu olan ve kaldırılabilecek paketlerin listesini görüntüler.

İlerleme Penceresi

görüntü tanımını buraya girin

İlerleme penceresi, işlem yaparken çalışan işlemleri görüntüleyen PIP-GUI için yerleşik bir terminal widget'ıdır.


1
Ubuntu'ya Sormaya Hoş Geldiniz! Bu soruyu teorik olarak cevaplayabilse de , cevabın temel kısımlarını buraya eklemek ve referans için bağlantıyı sağlamak tercih edilir.
Kevin Bowen
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.