[Tutor] Running programs that import 3rd party packages installed using pip.
Mats Wichmann
mats at wichmann.us
Thu Oct 4 09:51:52 EDT 2018
On 10/03/2018 09:20 PM, Roger B. Atkins wrote:
> System: Windows 10, Anaconda, Python 3, Spyder3
>
> Problem: Running programs that import requests, pyperclip, bs4 and/or
> other modules from 3rd party packages works fine within Spyder IDE,
> but not from command line, or Win/R. The error message indicates no
> such module. Therefore, my programs crash at the import statement. In
> contrast, programs using built in modules work fine everywhere.
> Questions: Which file needs to be found? Is this a path problem?
>
> Efforts to solve problem: After making sure I had correctly typed the
> module names, my second guess was that it is a path problem, so I used
> win explorer to locate the module files. I also went to the command
> line and used "pip show modname".
> The search using win explorer revealed module files in multiple
> directories, so part of the problem may be that I don't know which
> file the import statement needs to be able to find.
> Based on results using pip show modname, the modules were installed in:
> Anaconda3\lib\site-packages.
> In fact, as shown in Win Explorer, they are in sub folders under
> \site-packages, and there are 'regular' py files as well as compiled
> files. (I'm a beginner, and thought Python was interpreted?)
>
> I changed my system path variable to include:
> C:\Users\rba21\Anaconda3\lib\site-packages # Result: same error message
> C:\Users\rba21\Anaconda3\lib\site-packages\pyperclip # Result: same
> error message
> I tried adding the sub folders down to __pycache__ but got the same
> error message.
>
> I did some web searches, but didn't find anything that enabled me to
> fix the problem.
Write this simple program and run it from the "command line":
import sys
print(sys.path)
those are the places Python will look for modules when importing. you
can add to sys.path in your program, or if you define PYTHONPATH, its
contents will show up in sys.path.
if you now do the same thing in a program running inside Spyder, you'll
probably see differences in sys.path.
as Alan said, the system/user environment paths have nothing to do with
Python's module importing.
More information about the Tutor
mailing list