No module named pkg_resources
July 2018 Update
Most people should now use pip install setuptools
(possibly with sudo
).
Some may need to (re)install the python-setuptools
package via their package manager (apt-get install
, yum install
, etc.).
This issue can be highly dependent on your OS and dev environment. See the legacy/other answers below if the above isn't working for you.
Explanation
This error message is caused by a missing/broken Python setuptools
package. Per Matt M.'s comment and setuptools issue #581, the bootstrap script referred to below is no longer the recommended installation method.
The bootstrap script instructions will remain below, in case it's still helpful to anyone.
Legacy Answer
I encountered the same ImportError
today while trying to use pip. Somehow the setuptools
package had been deleted in my Python environment.
To fix the issue, run the setup script for setuptools
:
wget https://bootstrap.pypa.io/ez_setup.py -O - | python
(or if you don't have wget
installed (e.g. OS X), try
curl https://bootstrap.pypa.io/ez_setup.py | python
possibly with sudo
prepended.)
If you have any version of distribute
, or any setuptools
below 0.6, you will have to uninstall it first.*
See Installation Instructions for further details.
* If you already have a working distribute
, upgrading it to the "compatibility wrapper" that switches you over to setuptools
is easier. But if things are already broken, don't try that.
Python Error : No module named pkg_resources
This is caused because of a broken setuptools package, you just need to reinstall it.
For most operating systems: pip install setuptools
Linux: apt-get install python-setuptools
or yum install python-setuptools
What is causing ImportError: No module named pkg_resources after upgrade of Python on os X?
[UPDATE] TL;DR pkg_resources
is provided by either Distribute or setuptools.
[UPDATE 2] As announced at PyCon 2013, the Distribute
and setuptools
projects have re-merged. Distribute
is now deprecated and you should just use the new current setuptools
. Try this:
curl -O https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
python ez_setup.py
Or, better, use a current pip
as the high level interface and which will use setuptools
under the covers.
[Longer answer for OP's specific problem]:
You don't say in your question but I'm assuming you upgraded from the Apple-supplied Python (2.5 on 10.5 or 2.6.1 on 10.6) or that you upgraded from a python.org Python 2.5. In any of those cases, the important point is that each Python instance has its own library, including its own site-packages library, which is where additional packages are installed. (And none of them use /usr/local/lib
by default, by the way.) That means you'll need to install those additional packages you need for your new python 2.6. The easiest way to do this is to first ensure that the new python2.6 appears first on your search $PATH
(that is, typing python2.6
invokes it as expected); the python2.6 installer should have modified your .bash_profile
to put its framework bin directory at the front of $PATH
. Then install easy_install
using setuptools following the instructions there. The pkg_resources
module is also automatically installed by this step.
Then use the newly-installed version of easy_install
(or pip
) to install ipython
.
easy_install ipython
or
pip install ipython
It should automatically get installed to the correct site-packages
location for that python instance and you should be good to go.
no module named pkg_resources.py2_warn pyinstaller
This is an issue with setuptools
as explained in this github ticket. Consider downgrading your setuptools
to 44.0 or below with the command
pip install --upgrade 'setuptools<45.0.0'
Have difficulty to solve No module named pkg_resources
Probably the easiest solution would be to download get-pip.py
, then run it using sudo
:
sudo python3 get-pip.py
assuming you have admin permissions on your computer. easy_install
has been deprecated for a long time, and pip
is definitely the way to go. By reinstalling pip
, setuptools
and all its dependencies should be correctly installed as well.
Related Topics
How to Send Http Requests to Flask Server
Which Is the Preferred Way to Concatenate a String in Python
Dynamically Evaluate an Expression from a Formula in Pandas
How to Filter Foreignkey Choices in a Django Modelform
Python's Time.Clock() VS. Time.Time() Accuracy
Label Encoding Across Multiple Columns in Scikit-Learn
Django Multivaluedictkeyerror Error, How to Deal with It
How to Open Process Again in Linux Terminal
Unix Socket Credential Passing in Python
How to Subtract a Day from a Date
Proper Name for Python * Operator
What's the Best Way to Parse a JSON Response from the Requests Library