Recientemente instalé un montón de archivos de puntos 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 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 los archivos de puntos y he restaurado mi .bash_profile a lo que era antes, pero el problema persiste. ¿Hay alguna forma de diagnosticar el problema o resolverlo de una manera fácil (por ejemplo, no es necesario crear todos los virtualenvs de nuevo)?
rmvirtualenv
todavía funciona, pero cuando se trata de corrermkvirtualenv
, me sale el siguiente error:-bash: /usr/local/bin/virtualenv: /usr/local/Cellar/python/2.7.6/Frameworks/Python.framework/Versions/2.7/Resour: bad interpreter: No such file or directory
Por lo tanto, parece ser un problema con mis caminos pitón, pero no puedo ver dónde está el problema, ya que se puede ejecutar Python y parece bien.virtualenv
comandos están funcionando ahora en teoría, pero dado que hay un problema con Python, no hacen nada. Entonces, el verdadero problema es con la pitón de brew. Y sospecho que la razón se debe a un cambio de nombre en los directorios de Python. Por alguna razón, todos estos comandos están buscando python en la carpeta/usr/local/Cellar/python/2.7.6
pero el nombre de la carpeta es en realidad/usr/local/Cellar/python/2.7.6_1
.2.7.6_1
a2.7.6
. Si lo peor llegaba a ser peor, podría cambiar el nombre.Respuestas:
Encontré la solución al problema aquí , por lo que todo el crédito va al autor.
La esencia es que cuando creas un virtualenv, se crean muchos enlaces simbólicos en el Python instalado con Homebrew.
Aquí hay un ejemplo:
Cuando actualiza Python usando Homebrew y luego lo ejecuta
brew cleanup
, los enlaces simbólicos en virtualenv apuntan a rutas que ya no existen (porque Homebrew las eliminó).Los enlaces simbólicos deben apuntar al Python recién instalado:
La solución es eliminar los enlaces simbólicos en virtualenv y luego recrearlos:
Probablemente sea mejor verificar qué enlaces se eliminarán primero antes de eliminarlos:
En mi opinión, es aún mejor eliminar solo enlaces simbólicos rotos. Puedes hacer esto usando GNU
find
:Puede instalar GNU
find
con Homebrew si aún no lo tiene:Tenga en cuenta que, de manera predeterminada, los programas GNU instalados con Homebrew tienden a tener el prefijo de la letra
g
. Esto es para evitar sombrear elfind
binario que se incluye con OS X.fuente
gfind
fue perfecto, ya que tenía muchos enlaces simbólicos ininterrumpidos (p. Ej., Nodeenv) que no quería eliminarfind -L ~/.virtualenvs/my-virtual-env/ -type l | xargs rm
pip3 freeze dyld: lazy symbol binding failed: Symbol not found: __Py_UnixMain
virtualenv ~/.virtualenvs/foo -p python2
contrario, usará Python 3.Después de intentar algunas cosas, esto funcionó para mí:
vaya a su directorio virtualenv (pero no ejecute workon):
Ahora borre estos archivos:
Luego, para reconstruir su venv, ejecute:
Ahora debería ver una lista de sus paquetes instalados nuevamente.
fuente
pipenv --rm
y recrearpipenv shell
,pipenv install
Esto ocurrió cuando actualicé a Mac OS X Mavericks desde Snow Leopard. También tuve que volver a instalar brew de antemano. Con suerte, ejecutó el comando de congelación para su proyecto con pip.
Para resolver, debe actualizar las rutas a las que apunta el entorno virtual.
brew install python
pip install --upgrade virtualenvwrapper
rmvirtualenv old_project
mkvirtualenv new_project
workon new_project
pip install -r requirements.txt
Esto debería dejar el proyecto como estaba antes.
fuente
La
@Chris Wedgwood
respuesta de una versión de actualización para mantenersite-packages
(mantener los paquetes instalados)fuente
Parece que la forma correcta de resolver este problema es ejecutar
después de haber actualizado Python con Homebrew.
Este debería ser un procedimiento general para cualquier fórmula que instale algo como Python, que tiene su propio sistema de administración de paquetes. Cuando instala
brew install python
, instalapython
epip
yeasy_install
yvirtualenv
y así sucesivamente. Entonces, si esas herramientas pueden actualizarse automáticamente, es mejor intentar hacerlo antes de considerar a Homebrew como la fuente de problemas.fuente
virtualenv .
en mi entorno virtual roto. La versión actualizada devirtualenv
entonces recreó las dependencias necesarias y estaba listo para comenzar. Este proceso fue más autogestionado y robusto que la respuesta aceptada para mí.Si esto fue causado por un
brew upgrade
que actualizó su Python, y está de acuerdo con la versión anterior, intentebrew switch python [previous version]
, por ejemplobrew switch python 3.6.5
. De aquí.fuente
instrucciones de virtualenvwrapper
Como se indica en la respuesta aceptada, es probable que la causa raíz sea una actualización casera que significa que sus enlaces simbólicos virtualenv apuntan a rutas de python rotas; vea los detalles aquí .
Para cada entorno virtual, debe reasignar los enlaces simbólicos para que apunten a la ruta de Python correcta (en la bodega de cerveza). Aquí está cómo hacerlo con virtualenvwrapper . Aquí estoy actualizando un entorno virtual llamado "my-example-env".
Todo listo.
fuente
Cualquiera que esté usando pipenv (¡y debería hacerlo!) Simplemente puede usar estos dos comandos, sin tener el venv activado:
fuente
pipenv --rm
en la carpeta de su env y luegopipenv install --dev
Si has reventado python3, solo intenta
brew upgrade python3
que me lo arreglen.fuente
Recientemente me enfrenté a esto. Ninguna de las soluciones anteriores funcionó para mí. Parece que en realidad no fue problema de Python. Cuando estaba ejecutando
aws s3 ls
recibía el siguiente error: ¡
dyld: Library not loaded: @executable_path/../.Python
Esto significa que el
aws
ejecutable de la biblioteca apunta hacia o no existe o está dañado, por lo tanto, desinstalé y reinstaléaws-cli
siguiendo las instrucciones de este enlace y funcionó!fuente
El problema para mí (un usuario de MacOS) es que
brew
actualizó los enlaces de Python y virtualenvs a la versión anterior que se eliminó.Podemos verificarlo y arreglarlo
fuente
Tuve un problema similar y lo resolví simplemente reconstruyendo el entorno virtual con
virtualenv .
fuente
Usando Python 2.7.10.
Un solo comando lo
virtualenv path-to-env
hace. documentaciónfuente
Tuve un entorno virtual roto debido a una reinstalación de Python por parte de Homebrew (por lo tanto, enlaces simbólicos rotos) y también algunas "instalaciones de sudo pip" que había hecho anteriormente. Los consejos de Weizhong fueron muy útiles para solucionar los problemas sin tener que reinstalar paquetes. También tuve que hacer lo siguiente para el problema de permisos mixtos.
sudo chown -R my_username lib / python2.7 / site-packages
fuente
Virtualenvs están rotos. A veces, la forma más simple es eliminar las carpetas venv y recrear virutalenvs.
fuente
Si usa pipenv, solo
pipenv --rm
resolver el problema.fuente
Estaba enfrentando el mismo problema después de actualizar brew en mi OSX Catalina.
Después de probar un montón de cosas, creo que la siguiente es la mejor y más fácil solución.
Al principio, elimine el entorno virtual. (Opcional)
luego recrear un nuevo virtualenv
Referencia: https://www.jeremycade.com/python/osx/homebrew/2015/03/02/fixing-virtualenv-after-a-python-upgrade/
fuente
La respuesta aceptada no me funciona: el archivo
$WORKON_HOME/*/bin/python2.7
ya no es un enlace simbólico, es un ejecutable completo:La solución es, por desgracia, eliminar por completo y volver a crear desde cero todos los entornos virtuales.
Para la referencia:
fuente
--always-copy
argumento para anularlo. Al menos eso es lo que obtuve de la Guía del usuario--always-copy
y tengo archivos regulares :-(Simplemente actualizar Python3 funcionó para mí:
fuente
Probé los mejores métodos, pero no funcionaron, para mí, que intentaban hacer que tox funcionara. Lo que finalmente funcionó fue:
incluso si tox ya estaba instalado. La salida terminó con:
fuente
Lo que me arregló fue simplemente desinstalar python3 y pipenv y luego reinstalarlos.
fuente
Todas las respuestas son geniales aquí, probé un par de soluciones mencionadas anteriormente por Ryan, Chris y no pude resolver el problema, así que tuve que seguir un camino rápido y sucio.
rm -rf <project dir>
(omv <project dir> <backup projct dir>
si desea mantener una copia de seguridad)git clone <project git url>
No hay nada nuevo aquí, ¡pero hace la vida más fácil!
fuente
Estoy seguro de que llego tarde a la fiesta, pero quiero decir que la resolución de este problema es mucho más simple de lo que se analiza aquí.
Puede regenerar fácilmente el entorno virtual sin tener que eliminar / editar nada. Suponiendo que se llama a su entorno roto
env_to_fix
, puede hacer lo siguiente:Esto regenerará los enlaces y arreglará el entorno sin la necesidad de volcar el estado actual en algún lugar y restaurarlo.
fuente
Me encontré con el mismo problema cuando estaba señalando mi tiempo de ejecución de Python de 2 a 3 en mi Mac, señalando la ruta de alias python a python 3. Luego recreé un nuevo virtualenv y reinstalé los paquetes que necesito para mi proyecto. Para mi caso de uso, he tenido un programa de Python escribiendo en Google Sheet. Limpie algunos paquetes que son diferentes de la implementación de Python 2 y, wa, las cosas comenzaron a funcionar nuevamente.
fuente