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