not - install python 2.7 linux
Python3.6 ImportError: no se puede importar el nombre ''main'' de Linux RHEL6 (10)
Mi objetivo final es descargar e instalar awscli http://docs.aws.amazon.com/cli/latest/userguide/awscli-install-linux.html
Parece que se requieren python y pip para lograr mi objetivo.
Instalar python a través de yum no me funciona, así que descargué e instalé python3 manualmente de la siguiente manera:
wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
tar xf Python-3.6.1.tar.xz
cd Python-3.6.1.tar.xz
./configure
make
sudo make altinstall
Cuando lo hago
pip3.6 --version
Entiendo esto:
Traceback (most recent call last):
File "/usr/local/bin/pip3.6", line 7, in <module>
from pip import main
ImportError: cannot import name ''main''
Entorno: RHEL 6.6 Accedido vía ssh
Que esta pasando? ¿Cómo instalar pip y python3.6 correctamente en mi caja de linux?
Editar:
Cuando intento instalar a través de yum falla, por lo que estoy tratando de evitar usar yum:
[asemani@rcdc9pfda5r Python-3.6.1]$ sudo yum -y install python-pip
[sudo] password for asemeani:
Loaded plugins: security
Setting up Install Process
No package python-pip available.
Error: Nothing to do
Otra edición:
Después de importar sys y luego llamar sys.path esto es lo que obtengo:
[asemani@rcdc9pfda5r Python-3.6.1]$ python3.6
Python 3.6.1 (default, Apr 28 2017, 11:03:27)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['''', ''/usr/local/lib/python36.zip'', ''/usr/local/lib/python3.6'', ''/usr/local/lib/python3.6/lib-dynload'', ''/usr/local/lib/python3.6/site-packages'']
>>> quit()
[asemani@rcdc9pfda5r Python-3.6.1]$ ls -l /usr/local/lib/python3.6/site-packages
total 32
-rw------- 1 root root 126 Apr 27 23:45 easy_install.py
drwx------ 11 root root 4096 Apr 27 23:45 pip
drwx------ 2 root root 4096 Apr 27 23:45 pip-9.0.1.dist-info
drwx------ 5 root root 4096 Apr 27 23:45 pkg_resources
drwx------ 2 root root 4096 Apr 27 23:45 __pycache__
-rw-r--r-- 1 root root 119 Apr 27 23:45 README.txt
drwx------ 5 root root 4096 Apr 27 23:45 setuptools
drwx------ 2 root root 4096 Apr 27 23:45 setuptools-28.8.0.dist-info
Debe editar el archivo pip3 así (su ruta podría ser diferente):
nano /Library/Frameworks/Python.framework/Versions/3.6/bin/pip3
Y cambia la línea principal de importación para que diga:
from pip._internal import main
Después de este cambio, mi pip3 comenzó a funcionar y estoy en macOS. Si está utilizando Linux, su ruta podría ser algo como / usr / bin / pip3
Encontré este consejo y más información de este hilo: https://github.com/pypa/pip/issues/5240
Hacer un cd /usr/bin
Luego sudo nano pip
para editar el archivo pip
Cambiar from pip import main
a from pip._internal import main
Esto resolverá el problema
Mi sistema operativo era Mac sierra y tuve que cambiar la siguiente línea
from pip import main
dentro
from pip._internal import main
Mi sistema operativo es Linux Mint 18
sudo nano /usr/bin/pip3
Cambio
from pip import main
A
from pip._internal import main
No invoque pip / pip3 directamente, que son accesos directos en diferentes ubicaciones para diferentes usuarios y no se mantienen adecuadamente al actualizar pip (marque ''which pip'' y ''sudo which pip'').
$ sudo python -m pip install xxx #for python2
$ sudo python3 -m pip install xxx #for python3
Estos comandos no toman accesos directos e invocan directamente el módulo pip, que se mantiene muy bien (también funciona en Windows)
No sé exactamente la respuesta, pero ese error indica que el script puede encontrar algún paquete llamado pip
, pero no el correcto. Probablemente, una versión antigua de pip, desde antes de que crearan un método main
(puede verificar pip.__version__
desde el shell de python).
Estoy dispuesto a apostar a que todavía tienes otra versión anterior de python instalada que tiene su propia versión de pip. Por alguna razón, tu pythonpath carga ese en lugar del que va con py3.6.
Algunas posibilidades para mirar en:
No sé nada acerca de redhat, pero ¿hay alguna forma específica de redhat para elegir el "pitón predeterminado" que se usará?
¿Es la línea shebang en la parte superior del script pip algo como
#!/usr/bin/env python
lugar de#!/usr/bin/python3.6
como debería ser?¿Es posible modificar el PATH de tu shell para que se use el python descargado?
¿Es posible cambiar PYTHONPATH (creo que se agrega al valor predeterminado de
sys.path
dentro de python; búsquelo) para cargar el nuevo pip en lugar del antiguo pip?
Parece que al script get pip le faltaba el hecho de que más de 1 versión de python podría residir en una máquina. Así que agregué las siguientes líneas:
PY2 = sys.version_info[0] == 2
PY3 = sys.version_info[0] == 3
Por alguna razón faltaba esto. De todos modos esto funcionó para mí. gracias por su ayuda chicos.
Pruebe lo siguiente como una forma de evitar el problema hasta que se solucione
sudo python -m pip --version
>> pip 10.0.1 from /usr/local/lib/python2.7/site-packages/pip (python 2.7)
sudo python -m pip install numpy --upgrade
>> Requirement already up-to-date: numpy in /usr/local/lib/python2.7/site-packages (1.14.2)
Realice los siguientes pasos para resolver el problema - (Ubuntu-Debian)
paso 1 - Ir al directorio
cd usr / bin /
y abra el archivo pip3 usando gedit o nano (a través de terminal).
Paso 2: cambiar from pip import main
a from pip._internal import main
PD: si no tiene permiso para cambiar use el comando - sudo chmod 777 pip3
y guarde este archivo.
¡¡Espero que esto ayude!!
sudo chmod -R a+rx /usr/local/lib/python3.6/site-packages
Puede ver el problema allí mismo en su salida ls -l /usr/local/lib/python3.6/site-packages
que su directorio pip solo puede leerlo el propietario, que es root.