我搜索了所有相关的问题,有很多类似的问题,但我的问题是
如何从php调用python脚本,我在其中导入了一些非标准库/模块
更具体地说,我有一个.py文件,测试.py,其中我导入了pycurl和botternose,这是一个amazonapi包装器。两个模块都不在标准库中。所以文件看起来像
import pycurl
import bottlenose
...
print "hello!"
然后我做了一个php文件,测试.php在
^{pr2}$两者兼而有之测试.php以及测试.py在同一目录下。更重要的是如果我跑
php test.php
在我的终端中,没有问题。成功输出“hello”,返回代码为0,表示程序无错误退出
但是,当我在我的浏览器上测试它时,www.someurl.com/test.php,出现了一些错误。我逐行跟踪,发现错误发生在“import pycurl”和“import bottlenose”。在
我也试着打印出来搜索路径,它确实包括宽吻的路径。在
有人能帮忙吗?在
谢谢!!在
通常,您不以}或{}等特殊用户的身份运行。而且该用户可能没有权限读取您安装的Python模块,这当然会导致导入失败。在
my_user_name
的身份运行web服务器,而是以httpd
或{若要测试此项,请尝试在导入之前打开它:
当然,如果
print
在您的设置中不能有效地工作,无论您如何打印出sys.path
,请在此处执行相同的操作。在如果这不是问题所在,您可以尝试将导入包装在一个
try
块中,以打印出异常并查看它失败的原因,因此我们不必猜测。在如果问题出在上,那么快速和肮脏的解决方案是让您的web服务器帐户通过
chmod
访问用户的Python modules目录,但更好的解决方案是将这些模块安装到系统范围内的site packages目录中,或者安装到web服务器帐户拥有的目录中。在对你的案子来说可能太重了,但你考虑过virtualenv吗?在
我相信系统路径如果在调用Python程序之前在php脚本中调用putenv,则是正确的。在
从成功的运行,抓住机会打印搜索路径. 我们把这个打印结果称为“x”。然后,尝试以下操作:
这有帮助吗?在
相关问题 更多 >
编程相关推荐