Search code examples
python-3.xmacosterminalpython-modulepyperclip

Can't import 3rd party python module


I would like to preface with the fact that I am a coding newbie and all this is very new to me. In fact, this is my first stack overflow question.

Anyways I am learning python and am trying to install my first third party module called “pyperclip” in Terminal, but I don't think it installed correctly. I am very new with Terminal as well.

For reference, I am following the youtube guide "Automate the Boring Stuff with Python"

Here are some of my system details:

  • Mac OS X
  • Python version 3.8.3

I ran the following into Terminal:

sudo pip3 install pyperclip

Then I received the following message in Terminal after installing pyperclip

The directory or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo’s -H flag.

I then tried to install again using the following:

sudo -H pip3 install pyperclip

Then I got this message:

Requirement already satisfied: pyperclip in /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages (1.8.0)

I tried installing one last time using:

pip3 install pyperclip

I got the same message again:

Requirement already satisfied: pyperclip in /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages (1.8.0)

This is also the error I get when I try importing pyperclip in my interactive shell:

>>> import pyperclip
Traceback (most recent call last):
  File “<stdin>”, line 1, in <module>
ModuleNotFoundError: No module named ‘pyperclip’
>>> 

Can anyone help me please? I feel like a fish out of the water with all this stuff. Especially when it comes to Terminal. Any help would be greatly appreciated.


Solution

  • I wanted to discuss a few things that might help you on your way.

    We typically do not use sudo in conjunction with pip to install Python packages. This installs the package at a system level and could conflict with packages that your system currently has installed or may install packages to a Python installation which is different than the one you are using from the terminal. Instead, we typically use pip install --user rather than sudo pip install.

    See this question and answer for more: sudo pip install VS pip install --user.

    If you are ever unsure whether a package has been installed properly, check using

    pip3 list
    

    We also need to make sure that the Python interpreter you are using is the same as where pip is installing. Since you are using pip3 to install, you should be using python3 at the terminal to enter the interactive shell. You can also verify that you are using the right Python interpreter by typing in the following command into the terminal:

    which python3
    

    Then, make sure that the output matches with the /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/ path that was reported by pip3.

    If you are using a different interactive shell such as ipython, you need to make sure that you install ipython in the same manner using

    pip3 install --user ipython
    

    and executing it using

    ipython3
    

    Try repeating your steps using this new information to see if it helps. Let me know if you have any more questions or need some more help.