在包中运行python脚本

时间:2018-03-20 16:10:27

标签: python

我正在努力在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
  • 将内容根添加到PYTHONPATH:是
  • 将源根添加到PYTHONPATH:是

所以我想在Ubuntu上的shell中运行main/script.py。我试过了:

PYTHONPATH=<PROJECT>
cd <PROJECT>/data
python3 ../main/script.py

但我得到了:ImportError: No module named 'tools'

2 个答案:

答案 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