我在AWS EC2 Ubuntu上有一个rails4应用程序。它将使用反勾号调用python程序:
pyresult = `python /path/to/abc.py`
python程序在我的本地开发环境中运行得很好,但是在生产服务器上它失败了,没有任何错误。(pyresult为空)
我调试了很长时间,发现了一个可能的原因:$PYTHONPATH
在local上,我的.bashrc中有以下内容,python程序要求添加:
^{pr2}$在服务器上,我还将它们添加到服务器上的.bashrc中。但是在我的应用程序中运行echo $PYTHONPATH
会给我一个空字符串。在
然后我在我的rails应用程序中显式地添加了
`export PYTHONPATH="$HOME/.local/lib/python2.7/site-packages/:$PYTHONPATH"`
pyresult = `python /path/to/abc.py`
但是$PYTHONPATH仍然是空的。调用python程序仍然没有出错。在
猜猜是丢失的$PYTHONPATH引起了这个问题吗?如果是,如何解决问题?谢谢你的帮助。(很抱歉,我不熟悉linux,不熟悉python)
Linux没有系统变量,只有环境变量,这些变量只能由子进程继承。这条线
仅为由反引号开始的子shell(以及从该子shell启动的任何进程)设置
PYTHONPATH
。一旦shell存在,PYTHONPATH
的设置就消失了。在您需要使用Ruby所拥有的任何工具来修改当前进程的环境,我收集到的(作为不使用Ruby的人)就是这样
^{pr2}$然后炮弹从
将从当前Ruby进程继承其
PYTHONPATH
值。在在使用open4gem运行命令后,我发现根本原因是paython程序找不到lib,它是通过设置.py. 所以这是另一个问题。在
相关问题 更多 >
编程相关推荐