我正在努力在shell中运行python脚本。我使用PyCharm哪里好一切,但我想运行脚本而不运行PyCharm。
所以我的项目文件夹就像:
data/
file.txt
main/
__init__.py
script.py
tools/
__init__.py
my_strings.py
我想运行main/script.py
,其中以from tools import my_strings
开头,工作目录应为data/
。
我的PyCharm配置是:
<PROJECT>/main/script.py
<PROJECT>/data
所以我想在Ubuntu上的shell中运行main/script.py
。我试过了:
PYTHONPATH=<PROJECT>
cd <PROJECT>/data
python3 ../main/script.py
但我得到了:ImportError: No module named 'tools'
答案 0 :(得分:1)
查看这篇文章,它解释了PYTHONPATH变量。
How to use PYTHONPATH以及答案指向https://docs.python.org/2/using/cmdline.html#envvar-PYTHONPATH
的文档默认情况下,当您从数据目录运行时,python无法找到您的工具目录。
另外,关于需要从数据目录运行的注释,如果您决定从主目录运行,则可以使用open('../data/file.txt')
。
理想情况下,您应该可以从任何地方运行脚本。我觉得这个代码段很有用os.path.dirname(sys.argv[0])
。它返回脚本所在的目录。
答案 1 :(得分:0)
我只是忘了按照史蒂夫的建议export $PYTHONPATH
。