mac instalar python macos virtualenv homebrew

instalar - macos python virtual environment



Referencias rotas en Virtualenvs (8)

Después de probar algunas cosas, esto funcionó para mí:

vaya a su directorio virtualenv (pero no ejecute workon):

cd ~/.virtualenv/name_of_broken_venv

Ahora borre estos archivos:

rm -rf .Python bin/python* lib/python2.7/* include/python2.7

Luego, para reconstruir tu venv, ejecuta:

virtualenv . workon name_of_broken_venv pip freeze

Ahora debería ver una lista de sus paquetes instalados nuevamente.

Recientemente instalé un montón de archivos dot en mi Mac junto con algunas otras aplicaciones (cambié a iTerm en lugar de Terminal y Sublime como mi editor de texto predeterminado) pero desde entonces, todos mis entornos virtuales han dejado de funcionar, aunque sus carpetas están dentro de .virtualenvs todavía están allí y dan el siguiente error cada vez que intento ejecutar algo en ellos:

dyld: Library not loaded: @executable_path/../.Python Referenced from: /Users/[user]/.virtualenvs/modclass/bin/python Reason: image not found Trace/BPT trap: 5

He eliminado todos los archivos relacionados con dotfiles y he restaurado mi archivo .bash_profile a lo que era antes, pero el problema persiste. ¿Hay alguna manera de diagnosticar el problema o resolverlo de una manera fácil (por ejemplo, sin tener que volver a crear todos los virtualenvs)?


Esto ocurrió cuando actualicé a Mac OS X Mavericks de Snow Leopard. Tuve que volver a instalar brebaje de antemano también. Esperemos que hayas ejecutado el comando de congelación para tu proyecto con pip.

Para resolverlo, debe actualizar las rutas a las que apunta el entorno virtual.

  • Instale una versión de python con brew:

brew install python

  • Reinstalar virtualenvwrapper.

pip install --upgrade virtualenvwrapper

  • Se eliminó el antiguo entorno virtual:

rmvirtualenv old_project

  • Crea un nuevo entorno virtual:

mkvirtualenv new_project

  • Trabajar en un nuevo entorno virtual

workon new_project

  • Use pip para instalar los requisitos para el nuevo proyecto.

pip install -r requirements.txt

Esto debería dejar el proyecto como estaba antes.


La respuesta aceptada no funciona para mí: el archivo $WORKON_HOME/*/bin/python2.7 ya no es un enlace simbólico, es un ejecutable hecho y derecho:

$ file $WORKON_HOME/*/bin/python2.7 /Users/sds/.virtualenvs/.../bin/python2.7: Mach-O 64-bit executable x86_64 ...

La solución es, por desgracia, eliminar por completo y volver a crear desde cero todos los entornos virtuales.

Para la referencia:

deactivate pip install --user virtualenv virtualenvwrapper pip install --user --upgrade virtualenv virtualenvwrapper for ve in $(lsvirtualenv -b); do # assume that each VE is associated with a project # and the project has the requirements.txt file project=$(cat $WORKON_HOME/$ve/.project) rmvirtualenv $ve mkvirtualenv -a $project -r requirements.txt $ve done


Si has arrestado a python3, prueba brew upgrade python3 que lo arregló por mí.


Una versión de actualización @Chris Wedgwood es la respuesta para mantener site-packages (mantener los paquetes instalados)

cd ~/.virtualenv/name_of_broken_venv mv lib/python2.7/site-packages ./ rm -rf .Python bin lib include virtualenv . rm -rf lib/python2.7/site-packages mv ./site-packages lib/python2.7/


Usando Python 2.7.10.

Un solo comando virtualenv path-to-env hace. documentation

$ virtualenv path-to-env Overwriting path-to-env/lib/python2.7/orig-prefix.txt with new content New python executable in path-to-env/bin/python2.7 Also creating executable in path-to-env/bin/python Installing setuptools, pip, wheel...done.


Parece que la forma correcta de resolver este problema es ejecutar

pip install --upgrade virtualenv

después de haber actualizado Python con Homebrew.

Este debería ser un procedimiento general para cualquier fórmula que instale algo así como python, que tiene su propio sistema de administración de paquetes. Cuando instala brew install python , instala python y pip y easy_install y virtualenv y así sucesivamente. Entonces, si esas herramientas se pueden actualizar automáticamente, lo mejor es tratar de hacerlo antes de considerar a Homebrew como la fuente de los problemas.


here encontré la solución al problema, por lo que todo el mérito recae en el autor.

Lo esencial es que cuando se crea un virtualenv, se crean muchos enlaces simbólicos al Python instalado en Homebrew.

Aquí hay un ejemplo:

$ ls -la ~/.virtualenvs/my-virtual-env ... lrwxr-xr-x 1 ryan staff 78 Jun 25 13:21 .Python -> /usr/local/Cellar/python/2.7.7/Frameworks/Python.framework/Versions/2.7/Python ...

Cuando actualiza Python usando Homebrew y luego ejecuta la brew cleanup , los enlaces simbólicos en el virtualenv apuntan a rutas que ya no existen (porque Homebrew las eliminó).

Los enlaces simbólicos deben apuntar a la Python recién instalada:

lrwxr-xr-x 1 ryan staff 78 Jun 25 13:21 .Python -> /usr/local/Cellar/python/2.7.8_1/Frameworks/Python.framework/Versions/2.7/Python

La solución es eliminar los enlaces simbólicos en el virtualenv y luego recrearlos:

find ~/.virtualenvs/my-virtual-env/ -type l -delete virtualenv ~/.virtualenvs/my-virtual-env

Probablemente sea mejor verificar qué enlaces se eliminarán primero antes de eliminarlos:

find ~/.virtualenvs/my-virtual-env/ -type l

En mi opinión, es incluso mejor eliminar solo enlaces simbólicos rotos. Puedes hacer esto usando GNU find :

gfind ~/.virtualenvs/my-virtual-env/ -type l -xtype l -delete

Puede instalar GNU find con Homebrew si aún no lo tiene:

brew install findutils

Tenga en cuenta que, de forma predeterminada, los programas de GNU instalados con Homebrew tienden a tener el prefijo con la letra g . Esto es para evitar sombrear el binario de find que se envía con OS X.