5 votos

¿La forma sugerida para manejar pip(easy_install) con homebrew?

Sé que hay brew-gem y brew-pip pero sigue siendo muy fácil confundirse. Digamos que mi Mac OS X es 10.7.2.

  • Hay al menos, que yo sepa, 3 ubicaciones para los módulos de Python (asumiendo 2.7):
    1. /Sistema/Librería/Frameworks/Python.framework/Versiones/2.7/
    2. /Library/Python/2.7/paquetes de sitio
    3. /usr/local/lib/python2.7/site-packages/ (controlado dentro de homebrew)
  • Para algunos módulos de Python, pip instalarlos en 2 , la llamada ubicación del módulo local/personalizado de Python, y todo se ve y funciona muy bien. Ej, línea de lectura por instalación_fácil ( ipython me sugirió que instalara línea de lectura por instalación_fácil en lugar de pip )
  • Para algunos, trataría de instalar algunos archivos misceláneos (ex, man, doc, ...) en la ubicación de todo el sistema, lo que requiere sudo ¡! Ex, ipython insistió en instalar hombre y doc en /Sistema/Librería/Frameworks/Python.framework/Versiones/2.7/share/ que viola la cuestión de los permisos y lo único que puedo hacer es utilizar sudo .
  • Para algunos módulos de Python instalados por cervecero son simbólicas y están vinculadas a /usr/local/lib/python2.7/site-packages/ . Todo parece estupendo, excepto que hay que acordarse de añadir esta ubicación en PYTHONPATH .

Me pregunto si hay alguna forma sugerida y uniforme de manejar esas masas, o alguna explicación para que esas cosas queden claras.

0 votos

No tengo una solución muy clara, salvo quizás utilizar unos cuantos métodos de instalación como sea posible.

3voto

Wayne Puntos 2391

Tal vez sea el momento de considerar el uso de virtualenv . Virtualenv crea entornos Python autónomos utilizando la versión de Python que usted especifique. Después de activar el nuevo entorno virtual, todo lo que se instala con pip va bajo ese entorno. Esto ayuda a evitar situaciones como la que has descrito.

Por ejemplo, crear y activar un nuevo entorno Python utilizando el Python por defecto:

# create environment
$ virtualenv --distribute myproject
New python executable in myproject/bin/python
Installing distribute...done.
Installing pip...done.

# activate environment
$ . ./myproject/bin/activate

# check default python
(myproject)$ which python
/Users/me/myproject/bin/python

Se sugiere utilizar el --distribute para indicar que se debe utilizar distribute para la instalación de paquetes en el nuevo entorno en lugar de (el antiguo) setuptools. Después de la activación, el símbolo del sistema cambia para indicar qué entorno de Python está activo.

Ahora instala algún paquete. Los archivos irán al directorio myproject:

# install django
(myproject)$ pip install django
...

# search for django dir
(myproject)$ find myproject -iname django
myproject/lib/python2.7/site-packages/django

Por último, desactivar:

# deactivate and check for default python
(myproject)$ deactivate
$ which python
/usr/bin/python

Para crear un entorno que utilice una versión no predeterminada de Python:

$ virtualenv --distribute -p /path/to/custom/python mynewproject

Por defecto, virtualenv copiará al nuevo entorno todos los paquetes instalados para la versión de Python que utilices para arrancarlo. Para evitar esto y crear un entorno vacío utilice la opción --no-site-packages opción. Esto es especialmente útil para crear entornos que puedan replicarse exactamente, por ejemplo, desde el desarrollo hasta la producción.

Actualización: A partir de la versión 1.7 --no-site-packages se ha convertido en el comportamiento por defecto de virtualenv.

Si quieres más detalles, hay un montón de tutoriales y entradas de blog en línea. Por ejemplo:

  1. Notas sobre el uso de pip y virtualenv con Django. (la mayor parte del post no es específica de django)
  2. Trabajar con virtualenv.

Pruébalo y seguro que te quedas con él.

Nota: Asegúrese de que sus ejecutables scripts no tienen el intérprete de Python codificado. Es decir, su primera línea debe ser #!/usr/bin/env python y no algo como #!/usr/bin/python .

0 votos

Te quedarás con él hasta que pip install scipy o PySide o PyQt4 falla, entonces volveremos a averiguar cuál es la mejor manera de mover los módulos instalados en Mac OSX Lion.

0 votos

¿Qué quieres decir con "mover"? La idea es que instales tus módulos en tu virtualenv y no utilices ubicaciones de instalación en todo el sistema.

0 votos

Para tu información, acabo de probarlo y scipy se instala como un encanto dentro de virtualenv. Hubo un par de problemas menores (numpy no aparece como dep, yo no haber instalado un compilador de fortran) pero nada desconcertante o difícil de superar. Apuesto a que los otros dos módulos tampoco tendrán problemas, siempre y cuando hayas instalado las librerías y cabeceras nativas necesarias con brew. Si tienes algún problema específico con tu instalación, por favor, haz una nueva pregunta con los detalles y no te limites a llamar BS a una solución que funcionó para esta pregunta y debería funcionar para la gran mayoría de los casos.

0voto

ranman Puntos 136

Mis sugerencias:

  1. Instale el paquete de herramientas de línea de comandos xcode mediante Xcode -> Preferencias -> Descargas-> Componentes : xcode

  2. Instale homebrew (actualice su ruta en .profile , .SHELLrc o lo que sea para incluir /usr/local/bin antes de el sistema por defecto como /usr/bin ).

  3. Para Python primero instale todos los prereqs por sí mismos:

    • brew install readline sqlite gdbm pkg-config
    • brew install python --framework --universal
    • actualiza tu ruta para que utilice los distutils correctos: export PATH=/usr/local/share/python:$PATH
  4. easy_install pip

  5. pip install virtualenv

  6. pip install virtualenvwrapper

  7. Incluya export PYTHONPATH=/usr/local/lib/python:$PYTHONPATH

0 votos

¡Wow! ¡¿Quitas las cosas incorporadas de Python y haces una simbólica para homebrew?! Realmente arriesgado.

0 votos

De todos modos, el Python incorporado es horrible: nada en el sistema operativo depende de él.

0 votos

Interesante enfoque - nota que en el paso 4, easy_install es un solo comando, no dos palabras.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: