Script running in PyCharm but not from the command line

When I try to run my program from the PyCharm IDE everything works fine but if I type in Fedora:

python myScript.py

in a shell prompt I get an import error from 1 of the module.

ImportError : No modue named myDependency

What does PyCharm do that allows the interpreter to find my dependencies when launched from the IDE? How can I get my script to find its dependencies so it can be launched with a singe command?


Solution 1:

There are a few possible things that can be causing this:

  1. The same python interpreter? Check with import sys; print(sys.executable)
  2. Is it the same working directory? Check with import os; print(os.getcwd())
  3. Discrepancies in sys.path, which is the list python searches sequentially for import locations, can possibly caused by environment variables. Check with import sys; print(sys.path).

Solution 2:

Adding this worked for me:

from os import sys, path
sys.path.append(path.dirname(path.dirname(path.abspath(__file__))))

Solution 3:

As a first step, in PyCharm go to project settings / python interpreter, and note the path. Then compare that to the result of which python -- do they line up? If not, you need to make them do so.

If that's ok, check what PyCharm defines as your project root in project settings / project structure. Is that the directory where your script is located? If not, you should run the script from that directory or append the directory to the $PYTHONPATH variable.

Almost definitely, it's one of those two things.