Python package manager: evitar conflictos con apt-get

0

Después de leer este comentario sobre la actualización de pip, ejecuté:

sudo pip3 install --upgrade pip

Como señala @ByteCommander, la actualización continúa /usr/local/bin/pip3, mientras que la versión de la distribución (de python3-pip) se encuentra en /usr/bin/pip3, y la primera tiene prioridad debido al orden en PATH. Parece que funciona bien, pero si ejecuto específicamente la versión de Ubuntu (16.04) me sale un error:

/usr/bin/pip3 -V
Traceback (most recent call last):
  File "/usr/bin/pip3", line 9, in <module>
    from pip import main
ImportError: cannot import name 'main'

Esto me hace desconfiar de las actualizaciones de Python. Entonces, estoy atascado tratando de instalar un paquete de Python que en realidad es de un repositorio de git y que no está en ningún repositorio de apt-get , y que también tiene dependencias.

Diagon
fuente

Respuestas:

0

Ya hay una publicación sobre esto.

https://stackoverflow.com/questions/28210269/importerror-cannot-import-name-main-when-running-pip-version-command-in-windo

Esto funcionó para mí.

siddesh chavan
fuente
Gracias @ siddesh-chavan. Eso parece funcionar, pero este problema fue simplemente una segunda parte, "Esto me hace desconfiar de las actualizaciones de Python". No pude instalar la versión más reciente de aiohttp, necesaria para stig, y no estoy seguro de cómo manejar la situación (ver arriba).
Diagon
0

Mi opinión después de muchos años de experiencia lidiando con problemas de dependencia de Python es que no debe actualizar los paquetes de Python del sistema fuera de apt. Esto siempre causa este tipo de problemas. El administrador de paquetes del sistema proporciona versiones estables de Python y varios paquetes de Python con un sistema de dependencia complejo, y cuando intenta cambiarlos manualmente fuera de apt, puede causar problemas.

Recomendaría purgar python-pip, reinstalar la versión provista por apt y luego solo usar el sistema Python para tareas relacionadas con el sistema y pequeños scripts que no necesitan paquetes adicionales. Para el trabajo de desarrollo que requiere otros paquetes que normalmente instalaría con pip, puede crear entornos virtuales (que son básicamente instalaciones nuevas de Python que no afectarán al sistema Python), o incluso mejor (IMO), instalar Anaconda Python que permite Instalar paquetes Python con pip y conda sin romper el sistema Python.

Steve
fuente
Sí, la purga / reinstalación es lo que dice hacer el segundo enlace en mi respuesta. Se menciona también los entornos virtuales - aunque nunca los he usado antes - junto con la instalación de vía --user. ¿Podría explicar: la instalación con --userno funcionaría tan bien? Mi dificultad es que estoy tratando de instalar un paquete de Python que en realidad es de un repositorio de git y que no está en ningún repositorio de apt-get .
Diagon
0

Como muestra el enlace señalado por @ siddesh-chavan, hay algunos problemas con la interfaz de apt-get y el administrador de paquetes de Python. No recomendaría esa solución vinculada. En cambio, creo que es mejor leer esto , y si ya ha actualizado pip / pip3, entonces rebaje de esta manera . El resultado es que no actualice el pip o pip3 del sistema. Instala y actualiza localmente, usando pip* install --user.

La respuesta debajo de ese segundo enlace también menciona entornos virtuales , al igual que @steve en su respuesta, ver más abajo.

Diagon
fuente