¿Cómo instalo un paquete pip globalmente en lugar de localmente?

99

Estoy intentando instalar el paquete flake8 usando pip3 y parece que se niega a instalar porque ya está instalado en una ubicación local.

¿Cómo puedo forzar su instalación global (nivel de sistema)?

pip3 install flake8
Requirement already satisfied (use --upgrade to upgrade): flake8 in ./.local/lib/python3.4/site-packages

Tenga en cuenta que preferiría una solución genérica (que debería funcionar en Debian, OS X tal vez incluso Windows), una que debería usarse en cualquier plataforma, por lo que no quiero especificar el destino yo mismo.

Por alguna extraña razón, se comporta como si ya hubiera especificado --userque en mi caso no lo hice.

La única forma en que pude instalar un paquete a nivel mundial fue primero eliminarlo e instalarlo nuevamente después de esto. De alguna manera parece que pip (8.1.1) se niega a instalar un paquete globalmente si existe localmente.

Descargo de responsabilidad: No se utilizaron ni se dañaron entornos virtuales durante los experimentos.

sorin
fuente
3
¿Lo ha intentado desde el usuario root o sudo?
matino
¿Usted ha intentado pip install flake8 --upgrade?
Mauro Baraldi
En caso de problemas similares relacionados con el uso de entornos virtuales (venv), use la --system-site-packagesopción para heredar paquetes instalados globalmente en su venv. Ver stackoverflow.com/a/61326709/4445175
Wlad

Respuestas:

138

¿Por qué no lo intentas sudocon la Hbandera? Esto debería funcionar.

sudo -H pip install flake8

Un usuario habitual sudo pip install flake8intentará utilizar su propio directorio personal. Le -Hindica que utilice el directorio de inicio del sistema. Más información en https://stackoverflow.com/a/43623102/

nikhilweee
fuente
98
Hcomo en Hlobal?
Matt
63
-Hcomo en hey sudo, deja de usar mi directorio de inicio. use su propio Hdirectorio ome en su lugar stackoverflow.com/a/43623102
nikhilweee
6
Esto realmente no lo instala globalmente, sino que parece almacenarlo en el directorio de inicio del usuario 'root'
parsecpython
@nikhilweee No entiendo en qué se diferencia esto de pip3 install ipythoncuando virtualenv está desactivado, parece que se instalan en el mismo site-packagesdirectorio.
iamfrancisyo
@parsecpython para mí, hace el truco e instala los paquetes en /usr/local/lib/python3.8/dist-packages donde quería que
estuvieran
8

Tal vez --force-reinstallfuncionaría, de lo contrario --ignore-installeddebería funcionar.

Manuel
fuente
5

¿Usted está utilizando virtualenv? En caso afirmativo, desactive virtualenv. Si no lo está utilizando, ya está instalado ampliamente (nivel de sistema). Intente actualizar el paquete.

pip install flake8 --upgrade
Mauro Baraldi
fuente
2
No es del todo cierto.
GMaster
2

De hecho, no veo tu problema. Globalmente es cualquier paquete que esté en la carpeta del paquete del sitio de su ruta de python3.

Si desea usarlo solo localmente, debe configurar un virtualenv y reinstalar los paquetes con un entorno virtual activado.

ILUMINADO
fuente
Al crear un venv, puede usarlo --system-site-packages .venv/devpara heredar paquetes globales para no tener que reinstalarlos en cada venv. Esto tiene sentido para los paquetes que uno quiera usar en cualquier proyecto, es decir, black, flake8, pytest. Ejemplo:python -m venv --system-site-packages .venv/dev
Wlad
-1

¿Dónde ocurren las instalaciones de pip en Python?

Daré una solución de Windows que estaba enfrentando y me tomó un tiempo resolver.

En primer lugar, en Windows (tomaré Windows como sistema operativo aquí), si lo hace pip install <package_name>, estará instalado globalmente por defecto ( si no ha activado un entorno virtual ). Una vez que active un entorno virtual y esté dentro de él, todas las instalaciones de pip estarán dentro de ese entorno virtual.


pip está instalando dichos paquetes pero no, ¿no puedo usarlos ?

Para este pip podría estar dándole una advertencia de que los ejecutables pip como pip3.exe, pip.exeno están en su variable de ruta. Para esto, puede agregar esta ruta (generalmente - C:\Users\<your_username>\AppData\Roaming\Programs\Python\) a sus variables ambientales . Después de esto, reinicie su cmd, y ahora intente usar su paquete de Python instalado. Debería funcionar ahora.

uinstinto
fuente