¿Qué sucede si accidentalmente pip install
un paquete que ya instalé usando de apt-get
antemano? ¿Simplemente uso la última versión (es decir, probablemente la que instalé usando pip
)? ¿Qué sucede al revés?
Nota: No uso Python en un entorno virtual (simplemente porque no sé por qué debería hacerlo; uso Python como herramienta de análisis de datos y sobre todo trato de usar la última versión de todo).
apt-get
ypip
pip
instala en/usr/local
subdirectorios de forma predeterminada o en cualquier otro directorio si lo desea.apt-get install python-pandas
seguidopip install pandas
, o al revés? ¿Cómo sabe mi instalación global de Python cuál de las dos versiones usar?python -c "import sys; print sys.path"
Respuestas:
Como @Timo mencionó en su comentario,
python -c "import sys; print sys.path"
le dará la ruta de carga del módulo Python para su instalación de Python. En una instalación relativamente nueva de 16.04, hay tres directorios notables (entre los 10 totales que estaban en el mío):Sin embargo, lo más importante que se debe tener en cuenta es que '/usr/local/lib/python2.7/dist-packages' tiene MAYOR precedencia que '/usr/lib/python2.7/dist-packages'.
Si primero instala un paquete de Python a través de apt (-get), se instalará en '/usr/lib/python2.7/dist-packages'. Si luego intenta usar pip para instalar el módulo, pip inicialmente le dará una advertencia de que la dependencia ya se ha cumplido, luego salga; agregar el indicador --upgrade forzará la instalación de pip, instalando el módulo en '/usr/local/lib/python2.7/dist-packages'. (Observe el resultado de que también se dice que la versión de '/usr/lib/python2.7/dist-packages' no se desinstala) A continuación, puede verificar que la versión PIP-instalado es el que está siendo utilizado por el uso de los siguientes:
python -c "import MODULE; print MODULE.__file__"
.Como tal, esto muestra que los paquetes instalados a través de pip tendrán prioridad sobre los paquetes instalados por el sistema, pero no sobrescribirán nada instalado desde apt (-get).
fuente
Para agregar a @Bryan Wyatt, parece deseable (y previsto) que los elementos PIP instalados / actualizados tengan prioridad sobre los paquetes instalados APT (probablemente más antiguos). Mi sistema tenía los caminos apt y pip invertidos. Debería ser (ignorando otras entradas):
Sin embargo, debido a alguna acción desconocida que debo haber tomado, estos caminos aparecieron en el orden opuesto para mí (ignorando otras entradas):
Resulta algo que yo añadí
/usr/lib/python2.7/dist-packages
a/usr/local/lib/python2.7/dist-packages/easy-install.pth
. Simplemente quitando la línea deeasy-install.pth
arreglado el error para mí./usr/lib/python2.7/dist-packages
todavía está en mi camino, ya que se agrega en una etapa posterior en otro lugar.Como nota al margen, pprint mostrará su camino mejor ... es decir:
fuente