Pycharm运行代码将当前工作目录添加到PYTHONPATH

时间:2018-06-01 20:20:37

标签: python

试图解决这个问题,因为从Pycharm和终端运行代码时之间存在不一致。

Pycharm自动添加当前工作目录;所以,如果我添加一个包含在我的CWD中的模块,那不是在Pythonpath中,它可以正常工作。

但是当从终端运行时,Python确实会抱怨,因为我的import语句引用了无法访问的模块,因为CWD没有添加到PYTHONPATH(我确实在从Pycharm运行时打印出变量的内容并从终端)。

所以在这一点上我假设在我的启动代码中,我需要在Pythonpath中添加当前目录,否则这是不正确的?我无法分辨最终用户可能将我的代码放在哪里;我只是假设包含所有不同模块的整个目录位于特定位置。

更具体地说,这就是我所在的地方:

  • 当我从Pycharm运行时,我的CWD是/apps/myapp/logic/,我在该目录中cd之后运行脚本,然后用./myscript.py

    <调用脚本/ LI>
  • 该脚本将#!/usr/bin/python3行作为第一行,而不是使用python3 -m myscript.py运行

  • 我得到的错误是加载一个模块,该模块位于我的脚本(/apps/myapp/logic/)的同一目录中或上一层(/apps/myapp/);遗憾的是,模块加载发生在__main__运行之前;所以我无法将sys.path添加到运行脚本的当前目录中。
  • 如果我只是从Pycharm
  • 运行脚本,那么所有这些问题都不会发生

1 个答案:

答案 0 :(得分:0)

经过各种反复试验,感谢我从评论中得到的信息;我找到了两种解决问题的方法。

1)创建一个shell脚本或另一个python脚本,它添加当前目录(所有文件都存在),并且在此文件中没有导入。然后脚本调用具有main函数的脚本。

2)在模块的顶部,在导入sys之后,添加语句以添加路径,这样当前目录将被添加到PATH并且当导入时它将是可访问的尝试访问该模块。

两者看起来都不太好,但这就是我能找到的,以解决问题。非常确定有一种更优雅的方式可以做到这一点