2009-07-31 14 views
117

Estoy empezando a aprender python y adorarlo. Trabajo en una Mac principalmente, así como en Linux. Estoy descubriendo que en Linux (sobre todo Ubuntu 9.04) cuando instalo un módulo de python usando apt-get, funciona bien. Puedo importarlo sin problemas.¿Cuál es la forma más compatible de instalar módulos de Python en una Mac?

En la Mac, estoy acostumbrado a utilizar Macports para instalar todas las cosas de Unixy. Sin embargo, descubro que Python no ve la mayoría de los módulos de Python que instalo con él. Pasé algún tiempo jugando con la configuración PATH y usando python_select. Nada ha funcionado realmente y en este punto no estoy realmente entendiendo, en cambio solo estoy hurgando.

Tengo la impresión de que Macports no es universalmente apreciado por la gestión de módulos de python. Me gustaría comenzar de nuevo usando un enfoque más "aceptado" (si es la palabra correcta).

Entonces, me preguntaba, ¿cuál es el método que usan los desarrolladores de Mac python para gestionar sus módulos?

preguntas de bonificación:

¿Utiliza pitón de Apple, o alguna otra versión? ¿Compila todo desde la fuente o hay un administrador de paquetes que funciona bien (¿Fink?).

+0

Había un buen artículo sobre el envasado de aplicaciones PyQt para Mac OS X en Ars Technica hace un tiempo: http://arstechnica.com/ open-source/guides/2009/03/how-to-deploying-pyqt-applications-on-windows-and-mac-os-x.ars – tgamblin

+7

MacPorts es perfecto para Python en la Mac. NOTA: debe instalar los paquetes de Python a través de MacPorts para que se instalen en su instalación MacPorts Python. También puedes instalar paquetes sin usar MacPorts; sin embargo, necesita hacer que la versión de python sea la predeterminada a través de python_select ANTES de instalar el paquete. Si instala el paquete y luego usa python_select, no hará la diferencia, ya que se habrá instalado en la versión de Python que fuera la predeterminada en el momento de la instalación. –

Respuesta

138

La manera más popular de gestionar paquetes de python (si no está utilizando el administrador de paquetes del sistema) es utilizar setuptools y easy_install. Probablemente ya esté instalado en su sistema. Utilizar de esta manera:

easy_install django 

easy_install utiliza el Python Package Index que es un recurso increíble para los desarrolladores de Python. Echa un vistazo para ver qué paquetes están disponibles.

Una mejor opción es pip, que está ganando tracción, ya que intenta fix a lot of the problems asociado con easy_install. Pip usa el mismo repositorio de paquetes que easy_install, simplemente funciona mejor.Realmente el único uso del tiempo necesario utilizar easy_install es para este comando:

easy_install pip 

Después de eso, utilice:

pip install django 

En algún momento es probable que desee aprender un poco sobre virtualenv. Si haces un montón de desarrollo python en proyectos con requisitos conflictivos del paquete, virtualenv es un regalo del cielo. Le permitirá tener versiones completamente diferentes de varios paquetes, y cambiar entre ellos fácilmente dependiendo de sus necesidades.

Con respecto a qué python usar, quedarse con el pitón de Apple le dará menos dolores de cabeza, pero si necesita una versión más nueva (Leopard es 2.5.1 creo), me iría con el macports python 2.6.

+4

Recientemente he reconstruido mi máquina y he cambiado a usar solo Homebrew y PIP, de repente todos los problemas de construcción que estaba teniendo desaparecieron. – GloryFish

3

¿Has mirado en easy_install en absoluto? No va a sincronizar sus macports ni nada de eso, pero se descargará automáticamente el último paquete y todas las dependencias necesarias, es decir,

easy_install nose 

para el paquete de la unidad de pruebas nariz o

easy_install trac 

para el trac seguimiento de fallos.

También hay un poco más de información en su página EasyInstall.

+1

easy_install está bien. Solo tenga en cuenta que, al igual que puede tener varias versiones de python instaladas, es fácil tener instaladas varias versiones de easy_install, cada una asociada con una instalación/versión de Python diferente. Solo necesita asegurarse de comprender a cuál está invocando (lo que (1) puede ser de ayuda). –

2

Cuando instala módulos con MacPorts, no entra en la versión de Apple de Python. En su lugar, esos módulos se instalan en la versión MacPorts de Python seleccionada.

Puede cambiar qué versión de Python se utiliza de forma predeterminada utilizando un puerto mac llamado python_select. instrucciones here.

Además, hay easy_install. Que usará python para instalar módulos de python.

+0

'python_select' ahora está en desuso, ver respuestas más recientes. – askewchan

30

Consulte Python OS X development environment. La mejor manera es usar MacPorts. Descargar e instalar MacPorts, a continuación, instalar Python a través de MacPorts escribiendo los siguientes comandos en el terminal:

 
sudo port install python26 python_select 
sudo port select --set python python26 

O

 
sudo port install python30 python_select 
sudo port select --set python python30 

Utilice el primer conjunto de comandos para instalar Python 2.6 y el segundo conjunto de instalar Python 3.0. A continuación, utilice:

 
sudo port install py26-packagename 

O

 
sudo port install py30-packagename 

En los comandos anteriores, reemplace nombrepaquete con el nombre del paquete, por ejemplo:

 
sudo port install py26-setuptools 

Estos comandos se instalará automáticamente el paquete (y sus dependencias) para la versión dada de Python.

Para una lista completa de los paquetes disponibles para Python, Tipo:

 
port list | grep py26- 

O

 
port list | grep py30- 

Qué te mando se utiliza depende de la versión de Python ha decidido instalar.

+1

Para el registro, en versiones recientes de MacPorts 'sudo python_select python30' ha sido reemplazado por' sudo port select --set python python30'. –

6

No hay nada de malo en usar una instalación de MacPorts Python. Si está instalando módulos de Python desde MacPorts pero luego no los ve, eso probablemente significa que no está invocando el pitón de MacPorts que instaló. En un shell de terminal, puede usar rutas absolutas para invocar las diversas pitones que pueden instalarse.Por ejemplo:

$ /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 

Para obtener el pitón derecho en forma predeterminada requiere asegurar su shell $ PATH está correctamente configurado para asegurar que el ejecutable de la derecha se encuentra primero. Otra solución es definir alias de shell para las diversas pitones.

Una instalación de python.org (MacPython) está bien, también, como otros han sugerido. easy_install puede ayudar, pero, de nuevo, debido a que cada instancia de Python puede tener su propio comando easy_install, asegúrese de estar llamando al easy_install correcto.

+2

Si usa MacPorts, la forma correcta de hacer que la versión de Python sea la predeterminada es no interferir con la RUTA, sino instalar "python_select" y dejar que cambie automáticamente los enlaces simbólicos necesarios para que esa versión de Python sea la predeterminada. –

+3

python_select solo administra enlaces simbólicos de python en/opt/local/bin y no hay garantía de que/opt/local/bin venga antes de/usr/local/bin o/usr/bin en $ PATH (aunque la instalación inicial de MacPorts intenta para hacerlo). El punto es que, con las múltiples versiones disponibles, usar solo "python" o incluso "python2.5" es un poco de crapshoot en general: no sabes a qué Python terminarás a menos que estés al tanto de los $ PATH obstaculiza y/o utiliza rutas absolutas. –

7

utilizo MacPorts para instalar los módulos de terceros seguidos por MacPorts en Python y /opt/local, y yo instalar los módulos instalados manualmente (no los que están en el repositorio MacPorts) en /usr/local, y esto nunca ha causado ningún problema. Creo que puede estar confundido en cuanto al uso de ciertos scripts MacPorts y variables de entorno.

MacPorts python_select se utiliza para seleccionar la versión "actual" de Python, pero no tiene nada que ver con los módulos. Esto le permite, por ejemplo, instalar Python 2.5 y Python 2.6 usando MacPorts, y cambiar entre las instalaciones.

Las variables de entorno $PATH no no afectan a qué módulos de Python se cargan. $PYTHONPATH es lo que estás buscando. $PYTHONPATH debe apuntar a los directorios que contienen los módulos de Python que desea cargar. En mi caso, mi variable $PYTHONPATH contiene /usr/local/lib/python26/site-packages. Si usa el Python de MacPorts, configura los otros directorios adecuados para usted, por lo que solo necesita agregar rutas adicionales al $PYTHONPATH. Pero nuevamente, $PATH no se usa en absoluto cuando Python busca los módulos que ha instalado.

$PATH es utilizado para encontrar archivos ejecutables, por lo que si se instala DarwinPorts Python, asegúrese de /opt/local/bin es en su $PATH.

6

Si utiliza Python desde MacPorts, que tiene su propia easy_install ubicada en: /opt/local/bin/easy_install-2.6 (por py26, tha t es). No es lo mismo que simplemente llamar a easy_install directamente, incluso si usaste python_select para cambiar tu comando predeterminado de python.

+1

Lo mismo para pip. Con la configuración de mi MacPorts, ejecuto pip-2.6 (que está en/opt/local/bin /) para instalar los módulos de Python que funcionan bien con la python MacPorts. Puedes 'sudo install install py2.6-pip' para obtener pip. – zlovelady

40

su pregunta ya tiene tres años y hay algunos detalles que no están cubiertos en otras respuestas:

La mayoría de la gente que conozco utilizan HomeBrew o MacPorts, prefiero DarwinPorts debido a su corte limpio de lo que es un defecto de Mac OS Entorno X y mi configuración de desarrollo.Basta con mover fuera de su /opt carpeta y probar sus paquetes con un entorno normal de Python usuario

DarwinPorts sólo es portátil dentro de Mac, pero con easy_install o pip usted aprenderá cómo configurar su entorno en cualquier plataforma (Win/Mac/Linux/Bsd ...). Además, siempre estará más actualizado y con más paquetes

Personalmente, dejé que MacPorts manejara mis módulos de Python para mantener todo actualizado. Como cualquier otro gestor de paquetes de alto nivel (es decir, apt-get), es mucho mejor para el levantamiento pesado de módulos con muchas dependencias binarias. No hay forma de que construya mis enlaces Qt (PySide) con easy_install o pip. Qt es enorme y lleva mucho tiempo compilar. Tan pronto como desee un paquete Python que necesite una biblioteca utilizada por programas que no sean Python, intente evitar easy_install o pip

En algún momento encontrará que faltan algunos paquetes en MacPorts. No creo que los MacPorts te den el total CheeseShop. Por ejemplo, recientemente necesité el módulo Elixir, pero MacPorts solo ofrece py25-elixir y py26-elixir, no la versión py27. En casos como estos tiene:

pip-2.7 instalar elixir --user

(asegúrese de que siempre escribe Pip (versión))

que va a construir una biblioteca de Python adicional en tu directorio de inicio Sí, Python funcionará con más de una ubicación de biblioteca: una controlada por MacPorts y una local por usuario para todo lo que falta dentro de MacPorts.

Ahora note que estoy a favor de pip sobre easy_install. Hay una buena razón por la que debe evitar setuptools y easy_install. Aquí hay un good explanation y trato de mantenerme alejado de ellos. Una característica muy útil de PIP le está dando una lista de todos los módulos (a lo largo de sus versiones) que había instalado MacPorts, easy_install y PIP sí:

pip-2,7 congelación

Si ya comenzó a usar easy_install, no se preocupe, pip puede reconocer todo lo hecho por easy_install e incluso actualizar los paquetes instalados con él.

Si es un desarrollador, tenga cuidado con virtualenv para controlar diferentes configuraciones y combinaciones de versiones de módulos. Otras respuestas lo mencionan ya, lo que no se menciona hasta ahora es el módulo Tox, una herramienta para probar que su paquete se instala correctamente con diferentes versiones de Python.

Aunque normalmente no tengo conflictos de versiones, me gusta tener virtualenv para configurar un entorno limpio y obtener una vista clara de las dependencias de mis paquetes. De esta forma, nunca olvidaré ninguna dependencia en mi setup.py

Si elige MacPorts, tenga en cuenta que ya no se seleccionan varias versiones del mismo paquete como el antiguo estilo Debian con un paquete python_select adicional (todavía está allí para compatibilidad).Ahora usted tiene el comando de selección para elegir la versión de Python será utilizado (incluso se puede seleccionar los instalados de Apple unos):

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

$ port select python python32 

Añadir tox en la parte superior de la misma y sus programas deben ser realmente portátil

-1

Directamente instalar uno de los paquetes de Fink (Django 1.6 a partir de 2013 a noviembre)

fink install django-py27 
fink install django-py33 

O crear usted mismo un virtualenv:

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

O uso Django Fink, además de los otros paquetes instalados en un pip virtualenv

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 
Cuestiones relacionadas