远程调用Python脚本时未导入包

2024-04-25 05:18:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我们有一个python2.7脚本,它在本地执行得非常好。在

只有当我尝试远程调用脚本(SSH)时才会出现问题:

ssh user@server "python script.py"

*Traceback (most recent call last):
File "script.py", line 18, in <module>
    import requests
ImportError: No module named requests*

在做了一点研究之后,我尝试使用系统路径插入导入库之前:

^{pr2}$

我甚至通过打印系统路径远程调用脚本时:

print '\n'.join(sys.path)

结果:

/usr/local/lib/python2.7/site-packages/setuptools-20.9.0-py2.7.egg
/usr/local/lib/python2.7/site-packages/requests-2.10.0-py2.7.egg
/usr/local/lib/python27.zip
/usr/local/lib/python2.7
/usr/local/lib/python2.7/plat-linux2
/usr/local/lib/python2.7/lib-tk
/usr/local/lib/python2.7/lib-old
/usr/local/lib/python2.7/lib-dynload
/usr/local/lib/python2.7/site-packages

但是,不管怎样,我仍然得到“ImportError:No module named requests”。在

你能帮我理解我缺少什么吗?在

同样,这个脚本确实可以找到库,并且在本地执行脚本时运行得非常好。在

谢谢!在


Tags: nopy脚本远程libpackagesusrlocal
2条回答

requests是一个非标准的Python库。确保它安装在您尝试执行脚本的远程设备上。在

在远程,从shell执行:

easy_install pip
pip install requests

如果我理解正确的话,您尝试在同一台机器上运行相同的脚本,但是一次是从本地shell运行,一次从远程shell运行(使用ssh)。在

如果是这种情况,那么在使用远程shell时,请确保正确设置了环境。在

这可以归结为只需正确设置PYTHONPATH环境变量。在

在您的情况下,这将是:

export PYTHONPATH=/usr/local/lib/python2.7/site-packages/:$PYTHONPATH

您可能需要添加更多的路径。在

{I通常是从python环境中的一个条目中获取的,{I)通常是从一个正在运行的python环境中获取的,因此我可以从这个环境中的一个条目来检查

^{pr2}$

对于这个例子,如果我不能正确地import requests,我会将/usr/local/lib/python2.7/site-packages/添加到我的PYTHONPATH中。在

相关问题 更多 >