Python pip install module is not found. How to link python to pip location?

PythonModulePathInstallationHomebrew

Python Problem Overview


I'm a newbie and I needed the pySerial and feedparser module for my projects. I'm running Mountain lion.

I followed the following tutorial so that I could upgrade to python 2.7.3 and then use the above mentioned modules.

http://hackercodex.com/guide/python-virtualenv-on-mac-osx-mountain-lion-10.8/

I followed this tutorial till I installed pip. Instead of installing Virtualenv. I used the following commands to install pySerial and feedparser

$ pip install pySerial
Requirement already satisfied (use --upgrade to upgrade): pySerial in /Library/Python/2.7/site-packages
Cleaning up...

I assumed that this was already present and checked it. Python seems to be importing this just fine. My python version has been upgraded to 2.7.3 btw since I installed it using homebrew as mentioned in the tutorial.

Then I tried installing feedparser

$ pip install feedparser
Requirement already satisfied (use --upgrade to upgrade): feedparser in /usr/local/lib/python2.7/site-packages
Cleaning up...

Notice how its in the site-packages directory in the usr/local/lib.

All of my pip installs are being installed in that directory but python does not seem to be picking them up when i try importing them.

How do I set the path so that python also looks there as well as core directory?

Your help will be greatly appreciated.

I tried looking for answers here: https://stackoverflow.com/questions/10569846/pip-installs-but-module-is-not-found https://stackoverflow.com/questions/13891934/why-i-cant-import-beautifulsoup-on-mac-using-python-2-7-after-installing-it-by

but niether of them are in the same situation as I am. I don't understand why this is happening as i edited my bash_profile with the following

# Set architecture flags
export ARCHFLAGS="-arch x86_64"
# Ensure user-installed binaries take precedence
export PATH=/usr/local/share/python:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
# Load .bashrc if it exists
test -f ~/.bashrc && source ~/.bashrc

then installed homebrew and then installed python 2.7.3 through homebrew (2.7.3 is now currently running on my machine)

I figured all pip installs would be correctly linked?

Python Solutions


Solution 1 - Python

As a quick workaround, and assuming that you are on a bash-like terminal (Linux/OSX), you can try to export the PYTHONPATH environment variable:

export PYTHONPATH="${PYTHONPATH}:/usr/local/lib/python2.7/site-packages:/usr/lib/python2.7/site-packages"

For Python 2.7

Solution 2 - Python

Here is something I learnt after a long time of having issues with pip when I had several versions of Python installed (valid especially for OS X users which are probably using brew to install python blends.)

I assume that most python developers do have at the beginning of their scripts:

#!/bin/env python

You may be surprised to find out that this is not necessarily the same python as the one you run from the command line >python

To be sure you install the package using the correct pip instance for your python interpreter you need to run something like:

>/bin/env python -m pip install --upgrade mymodule

Solution 3 - Python

I also had this problem. I noticed that all of the subdirectories and files under /usr/local/lib/python2.7/dist-packages/ had no read or write permission for group and other, and they were owned by root. This means that only the root user could access them, and so any user that tried to run a Python script that used any of these modules got an import error:

$ python
Python 2.7.3 (default, Apr 10 2013, 06:20:15) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import selenium
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named selenium
>>> 

I granted read permission on the files and search permission on the subdirectories for group and other like so:

$ sudo chmod -R go+rX /usr/local/lib/python2.7/dist-packages

And that resolved the problem for me:

$ python
Python 2.7.3 (default, Apr 10 2013, 06:20:15) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import selenium
>>> 

I installed these packages with pip (run as root with sudo). I am not sure why it installed them without granting read/search permissions. This seems like a bug in pip to me, or possibly in the package configuration, but I am not very familiar with Python and its module packaging, so I don't know for sure. FWIW, all packages under dist-packages had this issue. Anyhow, hope that helps.

Regards.

Solution 4 - Python

No other solutions were working for me, so I tried:

pip uninstall <module> && pip install <module>

And that resolved it for me. Your mileage may vary.

Solution 5 - Python

For the sake of anyone also using visual studio from a windows environment:

I realized that I could see my module installed when i ran pip install

py pip install [moduleName] 
py pip list

However debugging in visual studio was getting "module not found". Oddly, i was successfully running import [moduleName] when i ran the interpreter in powershell.

Reason:

visual studio was using the wrong interpreter at: C:\Users\[username]\AppData\Local\Programs\Python\Python37\

What I REALLY wanted was visual studio to use the virtualenv that i setup for my project. To do this, right click Python Environments in "solution explorer", select Add Virtual Environment..., and then select the folder where you created your virtual environment. enter image description here Then, under project settings, under the General tab, select your virtual environment in the dropdown.

enter image description here

Now visual studio should be using the same interpreter and everything should play nice!

Solution 6 - Python

If your python and pip binaries are from different versions, modules installed using pip will not be available to python.

Steps to resolve:

  1. Open up a fresh terminal with a default environment and locate the binaries for pip and python.
readlink $(which pip)
../Cellar/python@2/2.7.15_1/bin/pip

readlink $(which python)
/usr/local/bin/python3      <-- another symlink

readlink /usr/local/bin/python3
../Cellar/python/3.7.2/bin/python3

Here you can see an obvious mismatch between the versions 2.7.15_1 and 3.7.2 in my case.

  1. Replace the pip symlink with the pip binary which matches your current version of python. Use your python version in the following command.
ln -is /usr/local/Cellar/python/3.7.2/bin/pip3 $(which pip)

The -i flag promts you to overwrite if the target exists.

That should do the trick.

Solution 7 - Python

Below steps helped me fix this.

  • upgrade pip version
  • remove the created environment by using command rm -rf env-name
  • create environment using command python3 -m venv env-aide
  • now install the package and check

Solution 8 - Python

I had an identical issue which I traced back to moving the directory containing my virtual environment. I only noticed it much later since I didn't use libraries that lived in the environment itself.

It seems like upon construction, the virtual environment sets a VIRTUAL_ENV variable that contains the path to itself, which is apparently appended to PATH when the environment is activated; this is not updated when moved manually, meaning changing the environment's location breaks links to libraries it contains.

I simply fixed things by deleting and re-creating my environment.

Solution 9 - Python

I was using administrator privileges on Ubuntu and I was encountering this issue. my command was sudo python3 <program.py>

It turns out that packages installed for root privileges are stored in a different place than regular user privileges.

I fixed it by writing sudo pip install <package name>

Then I could run the program. Good luck!

Solution 10 - Python

for my case, I go to the venv settings in vs code
Visit this link and scroll down to Update Venv Path Settings in VSCode:
https://techinscribed.com/python-virtual-environment-in-vscode/

Solution 11 - Python

For me the problem was that I had weird configuration settings in file pydistutils.cfg

Try running

rm ~/.pydistutils.cfg

Solution 12 - Python

What worked for me (using Python 3.8) was:

  1. Uninstalling the remains of older python versions (somehow had 3 different ones installed and never noticed)
  2. upgrading pip to the newest version
  3. deleting and reinstalling the module

This avoids pip installing the package to a version that you and your IDE don't use.

Solution 13 - Python

how did you install easy_install/pip? make sure that you installed it for the upgraded version of python. what could have happened here is that the old (default) python install might be linked to your pip install. you might wanna try running the default version and importing the newly installed modules.

Solution 14 - Python

Make sure to check the python version you are working on if it is 2 then only pip install works If it is 3. something then make sure to use pip3 install

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser1953478View Question on Stackoverflow
Solution 1 - PythonRuslanView Answer on Stackoverflow
Solution 2 - PythonsorinView Answer on Stackoverflow
Solution 3 - PythonbosheaView Answer on Stackoverflow
Solution 4 - PythonCory KleinView Answer on Stackoverflow
Solution 5 - PythonSolarcloudView Answer on Stackoverflow
Solution 6 - PythonadcView Answer on Stackoverflow
Solution 7 - PythonSuperNovaView Answer on Stackoverflow
Solution 8 - PythonSimon DemeuleView Answer on Stackoverflow
Solution 9 - PythonOnlooker1456View Answer on Stackoverflow
Solution 10 - Pythonuser14811578View Answer on Stackoverflow
Solution 11 - PythonyaskView Answer on Stackoverflow
Solution 12 - PythonbrainsurgeonView Answer on Stackoverflow
Solution 13 - PythonAkashView Answer on Stackoverflow
Solution 14 - PythonDivyam SolankiView Answer on Stackoverflow