instalar app python flask pip

python - app - Archivo “/ usr/bin/pip”, línea 9, en<module> desde pip import main ImportError: no se puede importar el nombre main



instalar flask en ubuntu (6)

TL; DR

  1. La solución ''ideal'' (Ubuntu / Debian):
    $ python -m pip uninstall pip para desinstalar el nuevo pip 10 y conservar tu pip 8 parcheado provisto por Ubuntu / Debian. Para una instalación de módulos en todo el sistema, usa apt siempre que sea posible (a menos que estés en un virtualenv), más sobre esto a continuación . En versiones más antiguas de Ubuntu / Debian, siempre agregue la --user cuando use pip fuera de virtualenvs (se instala en ~/.local/ , predeterminado en python-pip y python3-pip desde 2016).

  2. Si aún desea utilizar el nuevo pip 10 exclusivamente, hay 3 soluciones rápidas:

    • simplemente vuelva a abrir una nueva sesión de bash (una nueva pestaña de terminal, o escriba bash ) - y el pip 10 estará disponible (vea pip -V ). el pip 8 de debian permanece instalado pero está roto; o
    • $ hash -d pip && pip -V para actualizar el nombre de ruta de pip en $ PATH. el pip 8 de debian permanece instalado pero está roto; o
    • $ sudo apt remove python-pip && hash -d pip (para Python 3 es python3-pip) - para desinstalar completamente el pip 8 de debian, en favor de su nuevo pip 10.

Nota: siempre deberá agregar el indicador de --user a la pip 10 no provista por Debian, a menos que esté en un virtualenv. Su uso de pip 10 en todo el sistema, fuera de virtualenv, no es realmente compatible con Ubuntu / Debian. Nunca sudo pip !

Detalles:
https://github.com/pypa/pip/issues/5221#issuecomment-382069604
https://github.com/pypa/pip/issues/5240#issuecomment-381673100

Entonces, aquí tenemos Python 2.7.12 en la máquina Ubuntu 16.04 ec2, y obtenemos ImportError: no podemos importar el nombre principal cuando intentamos usar pip. Es causado por el comando pip install --upgrade pip : que instala la última versión de pip 10 junto con la versión pip predeterminada de Ubuntu del paquete debian python-pip de la distribución del sistema operativo (la instalación del sistema Python), sin pasar por alto el subsistema de apt Ubuntu. Rompe el pip predeterminado de Ubuntu: el script del iniciador parcheado de debian de python-pip (instalado por el sistema a / usr / bin / pip *) intenta importar main () desde su biblioteca pip 10 recién instalada, pero con una importación diferente camino, por lo que falla.

Este error se explica con más detalle en un hilo de desarrollador del rastreador de problemas de pip, incluidas algunas soluciones propuestas, como:

  • El comando $ hash -d pip : cuando se invoca el hash , la ruta de acceso completa de pip se determina buscando los directorios en $ PATH y se los recuerda. Cualquier nombre de ruta recordado anteriormente se descarta. La opción -d hace que el shell "olvide" la ubicación recordada del nombre del paquete dado; o

  • De manera similar, simplemente puede volver a abrir una nueva sesión de bash (una nueva pestaña de terminal) para actualizar la ruta de acceso de pip en $ PATH; o

  • Puede usar un comando pip2 versionado (o pip3 para Python 3) en lugar de pip para invocar el /usr/bin/pip2 instalado en el sistema /usr/bin/pip2 , mientras que cualquier secuencia de comandos pip ubicada en $HOME/.local/bin dir (pip, pip2, pip2.7) invocará su nueva versión pip 10 instalada por el usuario;

  • También puede usar los comandos de Python versionados en combinación con el -m para ejecutar la copia apropiada de pip, por ejemplo:
    $ python2 -m pip install --user SomePackage # default Python 2
    $ python2.7 -m pip install --user SomePackage # específicamente Python 2.7
    Esto es útil si tiene varias versiones de Python y necesita una extensión de PyPI, como su módulo MySQL-python (MySQLdb) o un Flask-MySQL, para una versión específica de Python. El conmutador --user solo es necesario fuera de virtualenv.

  • O bien, desinstale uno de los dos pips, ya sea instalado por el usuario o instalado por el sistema , para resolver el conflicto:
    $ python -m pip uninstall pip : para eliminar su pip instalada manualmente en favor de la versión previamente instalada de Ubuntu del paquete debian de python-pip (python3-pip para Python 3); es un poco más antiguo, pero encuentra e instala los últimos módulos de PyPI muy bien, y tiene un comando pip que funciona de forma predeterminada en $ PATH; o
    $ sudo apt-get remove python-pip - para desinstalar el pip provisto por Ubuntu en favor de su último pip 10; Si no puede acceder a él a través del comando short pip , simplemente agregue su directorio $HOME/.local/bin a su variable de entorno $ PATH para usar el comando pip (vea arriba).
    Nota: Ubuntu 16.04 pip v8.1.1 y el último pip v10.0.1 producen exactamente los mismos resultados de búsqueda del índice PyPI y pueden extraer las mismas versiones de módulos;

  • Finalmente, podría ignorar ambos puntos a favor de APT e instalar paquetes de Python en todo el sistema desde el repositorio de Ubuntu con:
    $ apt search <python-package> # o apt-cache search en Ubuntu más antiguo
    $ apt show <python-package> # eg python-flask
    $ sudo apt install <python-package> # o sudo apt-get install
    Los paquetes con el prefijo python- son para Python 2; con python3- son para python 3.
    El método de instalación estándar de apt-get puede ser lo que necesita. Por ejemplo, en tu caso:
    python-mysqldb - interfaz de Python para MySQL <- una bifurcación de MySQLdb == MySQL-python
    python-flask-sqlalchemy - Compatibilidad con SQL Alchemy
    python-pymysql - controlador puro de MySQL para Python
    De hecho, los paquetes python del repositorio de Ubuntu se preferred siempre que sea posible, particularmente en el caso de dependencias pesadas del sistema o cuando se usan en todo el system-wide . Por supuesto, la cantidad de paquetes de Python en el repositorio de Ubuntu (¡unos pocos miles!) Es relativamente menor en comparación con PyPI (y tiene solo una versión de ellos), porque cualquier repositorio de sistemas operativos se está quedando un poco por detrás de las versiones de PyPI. Pero la ventaja de APT es que todos los paquetes provistos por Ubuntu se sometieron a pruebas de integración dentro de Ubuntu, además de que apt-get resuelve rápidamente dependencias pesadas como extensiones C de forma automática. Siempre obtendrá las bibliotecas del sistema que necesita como parte de la instalación de apt, pero con pip no tiene tales garantías .
    Sin embargo, es posible que APT no sea una opción si realmente solo necesita la última versión del paquete (o cierta versión anterior), o cuando solo se puede encontrar en PyPI, o cuando los módulos deben aislarse; Entonces pip es una herramienta más apropiada. Si tiene que usar el comando pip install en Ubuntu en lugar de apt-get install , asegúrese de que se ejecute en un entorno de desarrollo virtual aislado, como con virtualenv ( sudo apt-get install python-virtualenv ), o utilizando un venv módulo (disponible solo en python3), o en un nivel por usuario ( pip install --user opción de comando de pip install --user ), pero no en todo el sistema (¡nunca sudo pip !).

Nota: se debe evitar el uso del comando sudo pip (con acceso root) en Ubuntu / Debian, ya que interferes con el funcionamiento del administrador de paquetes del sistema (apt) y puede afectar a los components sistema operativo Ubuntu cuando un módulo de Python usado por el sistema se actualiza inesperadamente. Particularmente por dependencias en otro paquete pip. Se recomienda nunca usar Pip para cambiar los paquetes de Python en todo el sistema, ya que estos son gestionados por apt-get en Ubuntu.

Estoy tratando de ejecutar una página web usando Python Flask y conectándola con la base de datos de MySQL y al instalar los paquetes de MySQL estoy recibiendo este error.

Estoy haciendo esto en ec2 Linux AWS.


Estos pasos me funcionaron.

1- Desinstalar la actualización pip de python.
2- Desinstalar el paquete pip de tu Ubuntu.
3- Comprueba que pip binario ya no está en tu sistema.

python -m pip uninstall pip apt remove python-pip whereis pip

4- Descargar e instalar pip. ( créditos para VanDragt.com )

wget https://bootstrap.pypa.io/get-pip.py -O /tmp/get-pip.py sudo python3 /tmp/get-pip.py pip install --user pipenv pip3 install --user pipenv echo "PATH=$HOME/.local/bin:$PATH" >> ~/.profile source ~/.profile whereis pip

Ahora deberías poder instalar cualquier paquete pip que desees.


Mi centavo, tuve el mismo ImportError: cannot import name main .

Mi sistema es una distribución Linux Ubuntu , he ejecutado este comando:

python -m pip uninstall pip

Esto ha eliminado una versión pip local (para el usuario).

Ya tenía un antiguo ejecutable de sistema pip / pip2 ( apt-get instalado en la antigüedad) que funcionaba a la perfección.


Prueba esto

Comprueba la versión de python que usas.

# Python --version

e intente instalar, por ejemplo, si su versión es 2.7

#python2.7 <package name>

Funcionará bien ......


Como se sugiere en el tema de github de pip

La solución temporal es -

Edite su archivo /usr/bin/pip y comente la línea principal de importación y edítelo

#from pip import main from pip._internal import main as main

Funcionó perfectamente para mí. Nota: esta es una solución temporal . Espera a que el equipo pip arregle esto.

O

from pip import main if __name__ == ''__main__'': sys.exit(main())

a esto:

from pip import __main__ if __name__ == ''__main__'': sys.exit(__main__._main())

Como se sugiere en esta respuesta SO .


sudo easy_install MySQL-python puede ayudar o intentarlo;

sudo yum instalar mysql-devel python-devel MySQL-python

Consulte este tutorial para obtener ayuda,