Ningún módulo llamado pkg_resources

452

Estoy implementando una aplicación Django en un servidor de desarrollo y estoy recibiendo este error cuando ejecuto pip install -r requirements.txt:

Traceback (most recent call last):
  File "/var/www/mydir/virtualenvs/dev/bin/pip", line 5, in <module>
    from pkg_resources import load_entry_point
ImportError: No module named pkg_resources

pkg_resourcesparece estar distribuido con setuptools. Inicialmente pensé que esto podría no estar instalado en Python en virtualenv, así que instalé setuptools 2.6(la misma versión que Python) en los paquetes de sitio de Python en virtualenv con el siguiente comando:

sh setuptools-0.6c11-py2.6.egg --install-dir /var/www/mydir/virtualenvs/dev/lib/python2.6/site-packages

EDITAR: Esto solo sucede dentro de virtualenv. Si abro una consola fuera de virtualenv, entonces pkg_resourcesestá presente, pero sigo recibiendo el mismo error.

¿Alguna idea de por qué pkg_resourcesno está en el camino?

igniteflow
fuente
Al instalar nltk, ocurre el mismo problema. Buena pregunta y respuesta útil
laike9m
44
pip uninstall -y setuptoolsy luego pip install setuptools==39.1.0trabajó para mí en Anaconda en Windows 10.
Ryan
1
@Ryan también trabajó para mí en Ubuntu 16.04, ¡gracias amable señor!
ElectRocnic

Respuestas:

634

Actualización de julio de 2018

La mayoría de las personas ahora deberían usar pip install setuptools(posiblemente con sudo).

Algunos pueden necesitar para (re) instalar el python-setuptoolspaquete a través de su gestor de paquetes ( apt-get install, yum install, etc.).

Este problema puede depender mucho de su sistema operativo y entorno de desarrollo. Vea el legado / otras respuestas a continuación si lo anterior no funciona para usted.

Explicación

Este mensaje de error es causado por un setuptoolspaquete de Python faltante / roto . Según el comentario # 581 del comentario de Matt M. y las herramientas de configuración , el script de arranque mencionado a continuación ya no es el método de instalación recomendado.

Las instrucciones del script bootstrap permanecerán a continuación, en caso de que siga siendo útil para alguien.

Respuesta heredada

Encontré lo mismo ImportErrorhoy mientras trataba de usar pip. De alguna manera, el setuptoolspaquete había sido eliminado en mi entorno Python.

Para solucionar el problema, ejecute el script de configuración para setuptools:

wget https://bootstrap.pypa.io/ez_setup.py -O - | python

(o si no tiene wgetinstalado (por ejemplo, OS X), intente

curl https://bootstrap.pypa.io/ez_setup.py | python

posiblemente con sudoantepuesto.)

Si tiene alguna versión de distributeo setuptoolsinferior a 0.6, primero deberá desinstalarla. *

Consulte las instrucciones de instalación para obtener más detalles.


* Si ya tiene un trabajo distribute, actualizarlo al "contenedor de compatibilidad" que lo cambia a usted setuptoolses más fácil. Pero si las cosas ya están rotas, no lo intentes.

cwc
fuente
42
La curvatura de un comando local siempre me asusta, pero esto funciona muy bien. :) Yo había corrido sudo pythonaunque YMMV.
Nik Reiman
44
Bajo Cygwin tuve que instalar el paquete python-setuptools . Esto hizo que easy_install volviera a funcionar, que había sufrido el mismo problema. Luego solía easy_install piphacer que pip volviera a funcionar. Mi problema surgió cuando Cygwin actualizó Python de 2.6 a 2.7 a mis espaldas al instalar algo no relacionado.
Steve Pitchers
55
Esta fue la mejor respuesta el año pasado ... pero a mediados de 2013, distributees obsoleta y setuptoolses su sucesora. Editaré la respuesta para actualizarla, pero no estoy seguro de que sea la mejor manera de manejarla, por lo que alguien puede revertir la edición, en cuyo caso: Vaya aquí .
abarnert
1
Esta URL no funcionó para mí, pero esta sí: peak.telecommunity.com/dist/ez_setup.py
ajtrichards
1
@Cerin: Sería más útil para todos si dijeras lo que sucedió cuando lo intentaste. ¿Y sudousaste, como anotó @Nik arriba?
Michael Scheper el
124
sudo apt-get install --reinstall python-pkg-resources

me lo arregló en Debian. Parece que desinstalar algunos paquetes .deb (conjunto retorcido en mi caso) ha roto la ruta que usa Python para encontrar paquetes

Marek
fuente
99
Estoy usando Python 3, así que tuve que ejecutar sudo apt-get install --reinstall python3-pkg-resources y eso lo solucionó. ¡Gracias!
Robert Townley
no ayudó con yapf, supongo, algo que ver con python3 / python2
don bright
53

He visto este error al intentar instalar rhodecode en un virtualenv en ubuntu 13.10. Para mí la solución era correr

pip install --upgrade setuptools
pip install --upgrade distribute 

antes de ejecutar easy_install rhodecode.

Ali Akdurak
fuente
12
pip install --upgrade setuptoolssolo hizo el truco para mí.
Ryan Tuck el
necesitabapip install --upgrade setuptools --user
dfrankow
55
No puedo correr pip install --upgrade setuptoolsdebido al mismo error:No module named pkg_resources
McLawrence
1
pip install --upgrade distributehizo el trabajo al usar el módulo venv de Python 3. El --distributeindicador virtual de Python 2 admite , pero uno tiene que instalar distributeen entornos creados por venv.
Nirmal
34

También me pasó a mí. Creo que el problema sucederá si require.txt contiene una entrada "distribuir" mientras virtualenv usa setuptools. Pip intentará parchear las herramientas de configuración para dejar espacio para la distribución, pero desafortunadamente fallará a la mitad.

La solución fácil es eliminar su virtualenv actual y luego hacer un nuevo virtualenv con el argumento --distribute.

Un ejemplo si usa virtualenvwrapper:

$ deactivate
$ rmvirtualenv yourenv
$ mkvirtualenv yourenv --distribute
$ workon yourenv
$ pip install -r requirements.txt
cochecito
fuente
2
esto me ayudó cuando ninguna de las otras soluciones lo hizo (usando Ubuntu 16.04)
MIkee
Para entornos creados por el módulo venv de Python 3, la ejecución pip install -U distributedespués de activar el entorno hará el trabajo.
Nirmal
17

En CentOS 6, la instalación del paquete python-setuptools lo arregló.

yum install python-setuptools
Pablo
fuente
Esto funciona en Debian si reemplaza "yum" con "sudo apt-get". También: sudo apt-get install python3-setuptools
gridtrak
Este es el que lo hizo por mí.
Tao Starbow
Tuve este problema en CentOS 7, y python-setuptools ya estaba instalado, pero lo sudo yum reinstall python-setuptoolssolucionó.
coneslayer
Reportó el error a CentOS.org bugs.centos.org/view.php?id=14042
rjt
14

Tuve este error anteriormente y la respuesta mejor calificada me dio un error al intentar descargar el ez_setup.pyarchivo. Encontré otra fuente para que pueda ejecutar el comando:

curl http://peak.telecommunity.com/dist/ez_setup.py | python

Descubrí que también tenía que usar sudopara que funcionara, por lo que es posible que deba ejecutar:

sudo curl http://peak.telecommunity.com/dist/ez_setup.py | sudo python

También he creado otra ubicación desde la que se puede descargar el script:

https://gist.github.com/ajtrichards/42e73562a89edb1039f3

ajtrichards
fuente
El comando "curl" no necesitaría sudo, por lo que podría ser:curl http://peak.telecommunity.com/dist/ez_setup.py | sudo python
tombrown52
1
esta respuesta me salvó con la adición "| sudo python", porque "| python" solo no funcionó. Gracias
patti_jane
14

Después de probar varias de estas respuestas y luego contactar a un colega, lo que funcionó para mí en Ubuntu 16.04 fue:

pip install --force-reinstall -U setuptools
pip install --force-reinstall -U pip

En mi caso, solo era una versión antigua de la almohada 3.1.1 que tenía problemas (la almohada 4.x funcionó bien), ¡y eso ya está resuelto!

ptim
fuente
8

Necesitaba un poco más de sudo. Luego usé easy_install para instalar pip. Trabajos.

sudo wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python
sudo easy_install pip
Tarion
fuente
1
sudono debería ser necesario en un virtualenv
igniteflow
Es cierto, tuve el mismo problema sin virtualenv.
Tarion
5

Arreglé el error con virtualenv haciendo esto:

Copiado pkg_resources.py de

/Library/Python/2.7/site-packages/setuptools

a

/Library/Python/2.7/site-packages/

Esta puede ser una solución económica, pero funcionó para mí.

.

Si las herramientas de configuración no existen, puede intentar instalar system-site-packages escribiendo virtualenv --system-site-packages /DESTINATION DIRECTORY, cambiando la última parte para que sea el directorio en el que desea instalar. pkg_rousources.pyestará debajo de ese directorio en lib / python2.7 / site-packages

mrgnw
fuente
Sí, en algunos proyectos, esta solución es la mejor (para mí)
nguyên
3

¡Para mí, este error fue causado porque tenía un subdirectorio llamado "sitio"! No sé si esto es un error pip o no, pero comencé con:

/some/dir/requirements.txt / some / dir / site /

pip install -r required.txt no funcionaría, ¡dándome el error anterior!

cambiar el nombre de la subcarpeta de "sitio" a "src" solucionó el problema. ¿Quizás pip está buscando "paquetes de sitio"? Loco.

jdg
fuente
2

Tuve este problema cuando activé mi virtualenv como un usuario diferente al que lo creó. Parece ser un problema de permiso. Descubrí esto cuando probé la respuesta de @cwc y vi esto en la salida:

Installing easy_install script to /path/env/bin
error: /path/env/bin/easy_install: Permission denied

Regresar al usuario que creó el virtualenv, luego ejecutar el pip installcomando original fue sin problemas. ¡Espero que esto ayude!

Martijn de Milliano
fuente
2

Tuve este problema hoy también. Solo tengo el problema dentro del entorno virtual.

La solución para mí fue desactivar el entorno virtual, eliminar y luego desinstalar virtualenv con pip y reinstalarlo. Después de eso, creé un nuevo entorno virtual para mi proyecto, luego pip funcionó bien tanto dentro del entorno virtual como en el entorno normal.

arno_v
fuente
2

Parece que se han alejado de Bitbucket y ahora están en github ( https://github.com/pypa/setuptools )

El comando para ejecutar es:

wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python
Shadyhill
fuente
Archivo "/python/Python-3.5.1/Lib/urllib/request.py", línea 162, en urlopen return opener.open (url, data, timeout) Archivo "/python/Python-3.5.1/Lib/urllib /request.py ", línea 465, en el archivo abierto" /python/Python-3.5.1/Lib/urllib/request.py ", línea 488, en _open 'unknown_open', req) Archivo" /python/Python-3.5 .1 / Lib / urllib / request.py ", línea 443, en _call_chain result = func (* args) Archivo" /python/Python-3.5.1/Lib/urllib/request.py ", línea 1310, en subida desconocida abierta URLError ('tipo de URL desconocido:% s'% tipo) urllib.error.URLError: <error de urlopen tipo de URL desconocido: https>
JDOaktown
2

Para mí, resultó ser un problema de permisos site-packages. Como solo es mi entorno de desarrollo, aumenté los permisos y todo está funcionando nuevamente:

sudo chmod -R a+rwx /path/to/my/venv/lib/python2.7/site-packages/
kat
fuente
2

Si tiene este problema con una aplicación instalada a través de conda , la solución (como se indica en este informe de error) es simplemente instalar herramientas de configuración con:

conda install setuptools
Gabriel
fuente
2

En Windows, con Python 3.7, esto funcionó para mí:

pip install --upgrade setuptools --user

--user instala paquetes en su directorio de inicio, que no requiere privilegios de administrador.

David Jablonski
fuente
2

La resolución simple es que puede usar conda para actualizar setuptools o todo el entorno. (Especialmente para usuarios de Windows).

conda upgrade -c anaconda setuptools

Si se eliminan las herramientas de configuración, debe instalarlas nuevamente.

conda install -c anaconda setuptools

Si estos métodos no funcionan, puede actualizar el entorno de conda. Pero no le recomiendo que necesite reinstalar y desinstalar algunos paquetes porque después de eso agravará la situación.

Weibin Wang
fuente
1

Aparentemente te faltan herramientas de configuración. Algunas versiones virtualenv usan distribuir en lugar de herramientas de configuración por defecto. Use la --setuptoolsopción cuando cree el virtualenv o configure el VIRTUALENV_SETUPTOOLS=1en su entorno.

Danilo Bargen
fuente
1

En mi caso, tenía 2 versiones de python instaladas inicialmente y luego eliminé la anterior. Entonces, al crear el entorno virtual

virtualenv venv

se refería a la pitón desinstalada

Que funciono para mi

python3 -m virtualenv venv

Lo mismo es cierto cuando intentas usar pip.

Afsan Abdulali Gujarati
fuente
0

Encontré esta respuesta cuando intentaba seguir esta guía para OSX . Lo que funcionó para mí fue que, después de correr python get-pip, TAMBIÉN tuve que hacerlo easy_install pip. Eso solucionó el problema de no poder ejecutar pip en absoluto. Me hizo tener un montón de cosas viejas MacPort instalado. Eso puede haber entrado en conflicto.

KitsuneYMG
fuente
0

simplemente reinstale su setuptoolspor:

$ sudo wget https://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz#md5=7df2a529a074f613b509fb44feefefe74e
$ tar -zxvf setuptools-0.6c11.tar.gz
$ cd setuptools-0.6c11/
$ sudo python setup.py build
$ sudo python setup.py install
$ sudo pip install --upgrade setuptools

entonces todo estará bien.

Scott Yang
fuente
0

Yo uso CentOS 6.7, y mi python acababa de actualizar de 2.6.6 a 2.7.11, después de probar tantas respuestas diferentes, finalmente la siguiente hace el trabajo:

sudo yum install python-devel

Espero ayudar a alguien en la misma situación.

adiós
fuente
0

Ninguna de las respuestas publicadas funcionó para mí, así que reinstalé pip y funcionó.

sudo apt-get install python-setuptools python-dev build-essential 

sudo easy_install pip 

pip install --upgrade setuptools

(referencia: http://www.saltycrane.com/blog/2010/02/how-install-pip-ubuntu/ )

usuario13107
fuente
Rastreo (última llamada más reciente): Archivo "/ usr / bin / easy_install", línea 5, en <módulo> de pkg_resources import load_entry_point ImportError: Ningún módulo llamado 'pkg_resources'
JDOaktown
owner-Dimension-3000 owner # sudo easy_install pip Traceback (última llamada más reciente): Archivo "/ usr / bin / easy_install", línea 5, en <module> de pkg_resources import load_entry_point ImportError: Ningún módulo llamado 'pkg_resources' owner-Dimension -3000 propietario # pip install --upgrade setuptools Traceback (última llamada más reciente): Archivo "/ usr / bin / pip", línea 5, en <module> de pkg_resources import load_entry_point ImportError: Ningún módulo llamado 'pkg_resources' owner-Dimension -3000 propietario #
JDOaktown
¿eliminó por primera vez la versión de pip instalada?
user13107
0

Me encontré con este problema después de actualizar mi compilación de Ubuntu. Parece haber pasado y eliminado las herramientas de configuración en todos mis entornos virtuales.

Para remediar esto, reinstalé el entorno virtual nuevamente en el directorio de destino. Esto limpió las herramientas de configuración faltantes y volvió a ejecutar las cosas.

p.ej:

~/RepoDir/TestProject$ virtualenv TestEnvironmentDir
Steve D.
fuente
0

Para mí, una buena solución era usar la --no-downloadopción virtualenv ( VIRTUALENV_NO_DOWNLOAD=1 toxpara tox.)

Baczek
fuente
0

En Opensuse 42.1, lo siguiente solucionó este problema:

zypper in python-Pygments
David Hamner
fuente
0

ImportError: ningún módulo llamado pkg_resources: la solución es reinstalar python pip usando el siguiente comando que se encuentra debajo.

Paso: 1 Inicie sesión en el usuario root.

sudo su root

Paso: 2 Desinstale el paquete python-pip si existe.

apt-get purge -y python-pip

Paso: 3 Descargar archivos usando el comando wget (Descarga de archivos en pwd)

wget https://bootstrap.pypa.io/get-pip.py

Paso: 4 Ejecute el archivo Python.

python ./get-pip.py

Paso: 5 Finalizar el comando de instalación.

apt-get install python-pip

Nota: El usuario debe ser root.

Tukadiya Ramesh
fuente
0

Experimenté ese error en mi entorno de Google App Engine. Y pip install -t lib setuptoolssolucionó el problema.

Murat Çorlu
fuente
0

Si está utilizando Python 3, debe usar pip3 en lugar de pip. El comando se parece a$ pip3 install requirements.txt

usuario3266968
fuente