Bir Mac'e python modülleri yüklemenin en uyumlu yolu nedir?


125

Python öğrenmeye ve onu sevmeye başlıyorum. Bir Mac üzerinde ve Linux üzerinde çalışıyorum. Apt-get kullanarak bir python modülü kurduğumda Linux'ta (çoğunlukla Ubuntu 9.04) iyi çalışıyor buluyorum. Zahmetsizce içe aktarabilirim.

Mac'te, tüm Unixy öğelerini yüklemek için Macports kullanmaya alışkınım. Ancak, onunla kurduğum python modüllerinin çoğunun python tarafından görülmediğini görüyorum. PATH ayarlarıyla oynamak ve python_select kullanmakla biraz zaman geçirdim. Hiçbir şey gerçekten işe yaramadı ve bu noktada gerçekten anlamıyorum, bunun yerine sadece etrafta dolaşıyorum.

Macports'un python modüllerini yönetmek için evrensel olarak sevilmediği izlenimini edindim. Daha "kabul edilmiş" (doğru kelime buysa) bir yaklaşım kullanarak yeni bir başlangıç ​​yapmak istiyorum.

Öyleyse merak ediyordum, Mac python geliştiricilerinin modüllerini yönetmek için kullandıkları yöntem nedir?

Bonus sorular:

Apple'ın python'unu veya başka bir sürümünü kullanıyor musunuz? Her şeyi kaynaktan mı derliyorsunuz yoksa iyi çalışan bir paket yöneticisi var mı (Fink?).


Bir süre önce Ars Technica'da Mac OS X için PyQt uygulamalarının paketlenmesi hakkında güzel bir makale vardı: arstechnica.com/open-source/guides/2009/03/…
Todd Gamblin

7
MacPorts, Mac'teki Python için mükemmeldir. NOT: MacPorts Python kurulumunuza yüklenebilmeleri için Python paketlerini MacPorts aracılığıyla yüklemeniz gerekir. Paketleri MacPorts kullanmadan da kurabilirsiniz; ancak, paketi yüklemeden ÖNCE python_select aracılığıyla bu python sürümünü varsayılan yapmanız gerekir. Paketi kurar ve ardından python_select kullanırsanız, kurulum sırasında varsayılan Python sürümüne yüklenmiş olacağından, bir fark yaratmayacaktır.
Michael Aaron Safyan

Yanıtlar:


144

Python paketlerini yönetmenin en popüler yolu (sistem paket yöneticinizi kullanmıyorsanız), setuptools ve easy_install kullanmaktır. Muhtemelen zaten sisteminize kuruludur. Bunu şu şekilde kullanın:

easy_install django

easy_install, python geliştiricileri için harika bir kaynak olan Python Paket Dizini'ni kullanır . Hangi paketlerin mevcut olduğunu görmek için etrafa bir göz atın.

Daha iyi bir seçenektir Pip o girişiminde olarak, çekiş kazanıyor, sorunların çoğunu düzeltmek easy_install ile ilişkili. Pip, easy_install ile aynı paket havuzunu kullanır, sadece daha iyi çalışır. Gerçekten easy_install kullanmak için gereken tek zaman bu komut içindir:

easy_install pip

Bundan sonra şunu kullanın:

pip install django

Bir noktada muhtemelen virtualenv hakkında biraz bilgi edinmek isteyeceksiniz . Çelişkili paket gereksinimleri olan projelerde çok fazla python geliştirmesi yaparsanız, virtualenv bir nimettir. Çeşitli paketlerin tamamen farklı sürümlerine sahip olmanıza ve ihtiyaçlarınıza bağlı olarak bunlar arasında kolayca geçiş yapmanıza olanak tanır.

Hangi pitonun kullanılacağına gelince , Apple'ın pitonuna bağlı kalmak size en az baş ağrısını verecektir, ancak daha yeni bir sürüme ihtiyacınız varsa (Leopard 2.5.1 inanıyorum), macports python 2.6'yı tercih ederim .


5
Yakın zamanda makinemi yeniden inşa ettim ve yalnızca Homebrew ve PIP kullanmaya başladım, birdenbire tüm yapım sorunları ortadan kalktı.
GloryFish

42

Sorunuz zaten üç yaşında ve diğer yanıtlarda ele alınmayan bazı ayrıntılar var:

Tanıdığım çoğu insan HomeBrew veya MacPorts kullanıyor , ben MacPorts'u varsayılan bir Mac OS X ortamı ve benim geliştirme kurulumumun temiz kesimi nedeniyle tercih ediyorum. / Opt klasörünüzü dışarı taşıyın ve paketlerinizi normal kullanıcı Python ortamında test edin

MacPorts yalnızca Mac içinde taşınabilir, ancak easy_install veya pip ile ortamınızı herhangi bir platformda (Win / Mac / Linux / Bsd ...) nasıl kuracağınızı öğreneceksiniz. Üstelik her zaman daha güncel ve daha fazla paketle birlikte olacak

Her şeyi güncel tutmak için kişisel olarak MacPorts'un Python modüllerimi işlemesine izin veriyorum. Diğer herhangi bir yüksek seviyeli paket yöneticisi gibi (yani: apt-get), çok sayıda ikili bağımlılık içeren modüllerin ağır kaldırılması için çok daha iyidir. Easy_install veya pip ile Qt bağlamalarımı (PySide) oluşturmamın hiçbir yolu yok. Qt çok büyük ve derlemesi çok zaman alıyor. Python dışı programlar tarafından kullanılan bir kitaplığa ihtiyaç duyan bir Python paketi istediğinizde, easy_install veya pip'ten kaçınmaya çalışın.

Bir noktada, MacPorts içinde bazı paketlerin eksik olduğunu göreceksiniz. MacPorts'un size tüm CheeseShop'u vereceğine inanmıyorum . Örneğin, yakın zamanda Elixir modülüne ihtiyacım vardı , ancak MacPorts yalnızca py25-elixir ve py26-elixir sunuyor, py27 sürümü yok. Bu gibi durumlarda sahip olursunuz:

pip-2.7 kurulum - kullanıcı iksiri

(her zaman pip- (sürüm) yazdığınızdan emin olun)

Bu, ana dizininizde fazladan bir Python kitaplığı oluşturacaktır. Evet, Python birden fazla kitaplık konumu ile çalışacaktır: biri MacPorts tarafından kontrol edilir ve MacPorts'ta eksik olan her şey için kullanıcı yerel olanı.

Şimdi easy_install yerine pip'i tercih ettiğime dikkat edin. Setuptools ve easy_install'dan kaçınmanız için iyi bir neden var. İşte güzel bir açıklama ve onlardan uzak durmaya çalışıyorum. Pip'in çok kullanışlı bir özelliği, size MacPorts, easy_install ve pip ile kurduğunuz tüm modüllerin (sürümleriyle birlikte) bir listesini vermesidir:

pip-2.7 donma

Easy_install kullanmaya zaten başladıysanız, endişelenmeyin, pip easy_install ile zaten yapılmış olan her şeyi tanıyabilir ve hatta onunla kurulan paketleri yükseltebilir.

Bir geliştiriciyseniz, farklı kurulumları ve modül sürümlerinin kombinasyonlarını kontrol etmek için virtualenv'e göz atın . Diğer cevaplar zaten bundan bahsediyor, şimdiye kadar bahsedilmeyen , paketinizin farklı Python sürümleriyle doğru şekilde kurulduğunu test etmek için bir araç olan Tox modülüdür.

Genelde sürüm çakışmaları olmasa da, temiz bir ortam kurmak ve paket bağımlılıklarımın net bir görünümünü elde etmek için virtualenv'e sahip olmayı seviyorum. Bu şekilde, kurulumumdaki herhangi bir bağımlılığı asla unutmam.py

MacPorts'a giderseniz, aynı paketin birden çok sürümünün artık fazladan python_select paketine sahip eski Debian stili gibi seçilmediğini unutmayın (uyumluluk için hala oradadır). Artık hangi Python sürümünün kullanılacağını seçmek için seçme komutuna sahipsiniz (Apple yüklü olanları bile seçebilirsiniz):

$  port select python
Available versions for python:
    none
    python25-apple
    python26-apple
    python27 (active)
    python27-apple
    python32

$ port select python python32

Üstüne toksin ekleyin ve programlarınız gerçekten taşınabilir olmalıdır


30

Lütfen Python OS X geliştirme ortamına bakın . En iyi yol, MacPorts kullanmaktır . MacPorts'u indirin ve kurun, ardından Terminal'de aşağıdaki komutları yazarak MacPorts aracılığıyla Python'u kurun:

sudo bağlantı noktası yükleme python26 python_select
sudo bağlantı noktası seçme - python python26 ayarla

VEYA

sudo bağlantı noktası yükleme python30 python_select
sudo bağlantı noktası seçme - python python30 ayarla

Python 2.6'yı yüklemek için ilk komut setini ve Python 3.0'ı yüklemek için ikinci komut setini kullanın. Sonra kullan:

sudo bağlantı noktası py26-packagename yükle

VEYA

sudo bağlantı noktası py30-packagename yükle

Yukarıdaki komutlar olarak, yerine packagename örneğin paket adı ile:

sudo bağlantı noktası yükleme py26-setuptools

Bu komutlar, verilen Python sürümü için paketi (ve bağımlılıklarını) otomatik olarak kuracaktır.

Python için mevcut paketlerin tam listesi için şunu yazın:

bağlantı noktası listesi | grep py26-

VEYA

bağlantı noktası listesi | grep py30-

Hangi komutu kullanacağınız, kurmayı seçtiğiniz Python sürümüne bağlıdır.


1
Kayıt için, MacPorts'un son sürümlerinde ile sudo python_select python30değiştirildi sudo port select --set python python30.
Benjamin Hodgson

7

Python'u ve MacPorts tarafından izlenen üçüncü taraf modülleri yüklemek için MacPorts kullanıyorum ve içine /opt/localmanuel olarak yüklenen modülleri (MacPorts havuzunda olmayanlar) yüklüyorum /usr/localve bu hiçbir zaman soruna neden olmadı. Bazı MacPorts komut dosyalarının ve ortam değişkenlerinin kullanımı konusunda kafanızın karışabileceğini düşünüyorum.

MacPorts python_select, Python'un "geçerli" sürümünü seçmek için kullanılır, ancak modüllerle hiçbir ilgisi yoktur. Bu, örneğin hem Python 2.5 hem de Python 2.6'yı MacPorts kullanarak kurmanıza ve kurulumlar arasında geçiş yapmanıza olanak tanır.

$PATHOrtam değişkenleri yok değil Python modülleri yüklenen neyi etkiler. $PYTHONPATHaradığınız şey. $PYTHONPATHYüklemek istediğiniz Python modüllerini içeren dizinleri göstermelidir. Benim durumumda $PYTHONPATHdeğişkenim içerir /usr/local/lib/python26/site-packages. MacPorts'un Python'unu kullanıyorsanız, sizin için diğer uygun dizinleri kurar, bu nedenle yalnızca ek yollar eklemeniz gerekir $PYTHONPATH. Yine $PATHde Python kurduğunuz modülleri aradığında hiç kullanılmaz.

$PATH olduğunu Eğer MacPorts' Python yüklemek eğer öyleyse, yürütülebilir bulmak için kullanılan, emin olun /opt/local/binGözlerinde farklı olduğunu $PATH.


6

MacPorts Python kurulumunu kullanmanın yanlış bir tarafı yoktur. MacPorts'tan python modülleri yüklüyorsanız ancak daha sonra görmüyorsanız, bu muhtemelen yüklediğiniz MacPorts python'u çalıştırmadığınız anlamına gelir. Bir terminal kabuğunda, kurulabilecek çeşitli Python'ları çağırmak için mutlak yollar kullanabilirsiniz. Örneğin:

$ /usr/bin/python2.5         # Apple-supplied 2.5 (Leopard)
$ /opt/local/bin/python2.5   # MacPorts 2.5
$ /opt/local/bin/python2.6   # MacPorts 2.6
$ /usr/local/bin/python2.6   # python.org (MacPython) 2.6
$ /usr/local/bin/python3.1   # python.org (MacPython) 3.1

Varsayılan olarak doğru python'u elde etmek için, önce doğru yürütülebilir dosyanın bulunduğundan emin olmak için $ PATH kabuğunuzun doğru şekilde ayarlandığından emin olmanız gerekir. Başka bir çözüm, çeşitli pitonlara kabuk takma adlarını tanımlamaktır.

Bir python.org (MacPython) kurulumu da diğerlerinin önerdiği gibi iyidir. easy_install yardımcı olabilir, ancak yine, her Python örneğinin kendi easy_installkomutu olabileceğinden , doğru olanı çağırdığınızdan emin olun easy_install.


2
MacPorts kullanıyorsa, Python'un bu sürümünü varsayılan yapmanın doğru yolu PATH ile uğraşmak değil, "python_select" i yüklemek ve Python'un bu sürümünü varsayılan yapmak için gerekli sembolik bağlantıları otomatik olarak değiştirmesine izin vermektir.
Michael Aaron Safyan

3
python_select yalnızca / opt / local / bin içindeki python sembolik bağlantılarını yönetir ve $ PATH'nizde / opt / local / bin'in / usr / local / bin veya / usr / bin'den önce geleceği garantisi yoktur (MacPorts'un ilk yüklemesi böyle yap). Buradaki nokta, mevcut birden fazla sürümle, sadece "python" veya hatta "python2.5" kullanmak genel olarak biraz saçma sapan bir şeydir: $ PATH tuzakları ve / veya mutlak yollar kullanın.
Ned Deily

6

Python'u MacPorts'tan kullanıyorsanız, /opt/local/bin/easy_install-2.6 (py26 için) konumunda bulunan kendi easy_install'una sahiptir . Varsayılan python komutunuzu değiştirmek için python_select kullansanız bile, easy_install'ı doğrudan çağırmakla aynı şey değildir.


1
Pip için de aynı. MacPorts kurulumumla, MacPorts python ile iyi oynayan python modüllerini kurmak için pip-2.6 (/ opt / local / bin / içinde) çalıştırıyorum. Şunları yapabilirsiniz sudo port install py2.6-pippip alır.
zlovelady

4

Easy_install konusuna hiç baktınız mı ? Macport'larınızı veya bunun gibi herhangi bir şeyi senkronize etmeyecek, ancak en son paketi ve gerekli tüm bağımlılıkları otomatik olarak indirecektir.

easy_install nose

burun ünitesi test paketi için veya

easy_install trac

için trachata takip.

EasyInstall sayfalarında da biraz daha bilgi var .


1
easy_install iyidir. Sadece, kurulu birden fazla python sürümüne sahip olabileceğiniz gibi, her biri farklı bir python kurulumu / sürümüyle ilişkili olan birden fazla easy_install sürümünün kurulu olmasının da kolay olduğunu unutmayın. Sadece hangisini çağırdığınızı anladığınızdan emin olmalısınız (hangisi (1) yardımcı olabilir).
Ned Deily


2

MacPorts ile modüller yüklediğinizde, Apple'ın Python sürümüne girmez. Bunun yerine, bu modüller seçilen Python'un MacPorts sürümüne yüklenir.

Python_select adlı bir mac bağlantı noktasını kullanarak varsayılan olarak hangi Python sürümünün kullanıldığını değiştirebilirsiniz . talimatlar burada .

Ayrıca easy_install var . Python modüllerini kurmak için python kullanacak.


python_selectartık kullanımdan kaldırıldı, daha yeni yanıtlara bakın.
askewchan




-1

Doğrudan fink paketlerinden birini kurun (Django 1.6 2013-Kasım itibariyle)

fink install django-py27
fink install django-py33

Veya kendinize bir virtualenv oluşturun:

fink install virtualenv-py27
virtualenv django-env
source django-env/bin/activate
pip install django
deactivate # when you are done

Veya bir virtualenv'de fink django ve diğer pip yüklü paketleri kullanın

fink install django-py27
fink install virtualenv-py27
virtualenv django-env --system-site-packages
source django-env/bin/activate
# django already installed
pip install django-analytical # or anything else you might want
deactivate # back to your normally scheduled programming
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.