运行 PyCharm 来自命令行的项目

Running PyCharm project from command line

我正在尝试将我的项目部署到服务器并 运行 它在那里。 当我尝试从命令行启动脚本时它显示错误 导入父目录中的脚本时。

我使用 PyCharm 创建了项目 (python 2.7.10),它分布在多个目录中。 文件夹看起来像这样:

project/dir/subdir/main_dir/script1.py

from dir.subdir.other_dir.script2 import *  //gives error here

project/dir/subdir/other_dir/script2.py

def my_function():
    //do something

我 运行 脚本通过转到 main_dir 和 运行ning: python script1.py

如果您从 运行ning 您的脚本 main_dir,这意味着当 运行ning 您的 Python 命令时,您的相对引用是 main_dir .所以你的进口是相对于 main_dir 作为你的根。

这意味着如果我们以您的 script1 为例,您的导入应如下所示:

from other_dir.script2 import *

很有可能您的 PyCharm 项目根目录实际上是从

设置为 运行
project/

这就是为什么您的参考文献在 PyCharm 中起作用的原因。

我建议你做的是,如果你的服务器应该在 main_dir 内 运行 那么你应该重新配置 PyCharm 以便它的执行根顺序相同消除这种混淆。

在我的案例中,这个问题的另一种解决方案是在触发程序的 python 项目的根目录中添加一个 main.py 脚本。

project/__main__.py:

from dir.subdir.other_dir.script2 import *  //doesn't give errors

这意味着当从终端调用程序时,工作区是正确的,并且每次包含脚本都会正确映射文件夹(从根目录)。

project/dir/subdir/main_dir/script1.py:

from dir.subdir.other_dir.script2 import *  //also doesn't give errors

另一个解决方案,您可以在导入时跳过父目录(并且不必更改脚本中的任何内容,从 Pycharm 执行到手动执行):

from script2 import *

当您在 运行 脚本之前设置 PYTHONPATH 变量时有效,例如像这样 Windows:

set PYTHONPATH=../other_dir && python script1.py

对于 Linux (bash) 是:

PYTHONPATH=../other_dir python script1.py

我相信这也是 PyCharm 在执行时所做的:将相应的文件夹添加到 PYTHONPATH。