python - pi3 - instalar numpy
¿Cómo puedo hacer que virtualenv prefiera sus bibliotecas locales a las bibliotecas globales? (3)
Comprueba algunas cosas.
which python
which pip
Ahora que está seguro de que está ejecutando el correcto, inicie python y:
import sys
print "/n".join(sys.path)
Luego salga de python y escriba echo $PATH
seguido de echo $PYTHONPATH
Sospecho que el problema será visible y si no puede solucionarlo configurando PYTHONPATH
, es probable que pueda hacerlo con el módulo del site
.
Necesito usar python en un servidor grande donde no tengo acceso de root. Quiero usar una versión más nueva de numpy que la que está instalada globalmente en la máquina. virtualenv
está diseñado exactamente para este propósito, y creo mi entorno virtual y lo activo con los siguientes comandos:
virtualenv my_personal_python
source my_personal_python/bin/activate
Luego instalo la nueva versión de la biblioteca que me interesa usar
pip install numpy==1.6.0
El problema es que cuando ahora importo números aún importa la versión global desactualizada, no la que se encuentra en el my_personal_python/lib/python2.6/site-packacges
del entorno virtual.
Ya conozco una posible solución, la marca --no-site-packages, como en:
virtualenv --no-site-packages my_personal_python
Cuando uso esta bandera, la importación se comporta como deseo. Pero no quiero usar este indicador porque no quiero volver a instalar todos los paquetes localmente, solo quiero anular un par de ellos.
(Estoy usando python 2.6, virtualenv 1.6.1, y la variable PYTHONPATH en mi máquina no está configurada).
Actualizar Incluso si agrego el directorio de paquetes de sitio desde el entorno virtual al comienzo de la ruta de acceso de python, el número no se importa desde esta ubicación (aunque otros paquetes se importan desde esta ubicación). Tal vez este problema es específico de numpy y no ocurre con los paquetes en general.
Esto funcionó para mí.
Mi which python
y which pip
eran exactamente correctos pero el sys.path
estaba equivocado. Mi virtualenv está en ~/virtualenvs/envy
. Originalmente estaba haciendo:
export PYTHONPATH=~/virtualenvs/envy/lib/python2.7/site-packages:$PYTHONPATH
pero esto todavía estaba importando el paquete de todo el sistema en lugar de mi virtualenv. PERO vi esta charla de PyCon en virtualenv y decidí probar:
export PYTHONPATH=~/virtualenvs/envy/lib/python2.7:$PYTHONPATH
Note la falta de site-packages
de site-packages
en la segunda opción. ¡Y esto realmente funcionó! Espero que ayude a alguien más.
Una solución más para este problema (al menos me ayudó): en mi ~/.local/lib/python2.7/site-packages/easy-install.pth
, había líneas (IMHO innecesarias) como /usr/lib/python2.7/dist-packages
. La eliminación de estas líneas ayudó, tal vez se quedaron de tiempos mucho más antiguos, cuando easy_install todavía hacía cosas más extrañas.