我正在尝试将我的项目部署到服务器并在那里运行它。 当我尝试从命令行启动脚本时,它显示错误 导入parrent目录中的脚本时。
我使用PyCharm创建了项目(python 2.7.10),它被分散到多个目录中。 这个文件夹像这样嘲笑fimetnihg:
项目/目录/子目录/ main_dir / script1.py
from dir.subdir.other_dir.script2 import * //gives error here
项目/目录/子目录/ other_dir / script2.py
def my_function():
//do something
我通过转到main_dir并运行:python script1.py
来运行脚本答案 0 :(得分:2)
如果从main_dir
运行脚本,则表示在运行Python命令时,相对引用为main_dir
。因此,您的导入是以main_dir
为根。
这意味着如果我们以您的脚本1为例,您的导入应如下所示:
from other_dir.script2 import *
有可能你的PyCharm项目root实际设置为从
运行project/
这就是为什么你的引用在PyCharm中工作的原因。
我建议您做的是,如果您的服务器应该在main_dir
内运行,那么您应该重新配置PyCharm,以便其执行根目录相同,以消除这种混淆。
答案 1 :(得分:1)
在我的情况下,这个问题的另一种解决方案是在python项目的根目录中添加一个 main .py脚本来触发该程序。
项目/ __主__ PY:
from dir.subdir.other_dir.script2 import * //doesn't give errors
这意味着当从终端调用程序时,工作区将是正确的,并且每次包含脚本都会正确映射文件夹(从根目录)。
项目/目录/子目录/ main_dir / script1.py:
from dir.subdir.other_dir.script2 import * //also doesn't give errors
答案 2 :(得分:0)
另一种解决方案,您可以在导入时跳过父目录:
from script2 import *
在运行脚本之前设置PYTHONPATH变量时有效,例如在Windows中是这样的:
set PYTHONPATH=../other_dir && python script1.py