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:
- The same python interpreter? Check with
import sys; print(sys.executable)
- Is it the same working directory? Check with
import os; print(os.getcwd())
- Discrepancies in
sys.path
, which is the list python searches sequentially for import locations, can possibly caused by environment variables. Check withimport 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.