sbe*_*idy 4 php python virtualenv
我试图使用PHP脚本或python脚本激活我的virtualenv但不使用SSH.
这是为了允许我的website.com/something.py文件访问某些库(如果这可以用另一种更简单的方式完成,请告诉我)
我的PHP代码是:
<?php
echo "A";
$result = exec("source ENV/bin/activate");
if ($result){
echo "Worked";
}
else{
echo "didnt work";
}
echo "B";
$result = system("python test.py");
?>
Run Code Online (Sandbox Code Playgroud)
我有test.py =
def main():
print "hello"
try:
import xlrd
except:
try:
print "xlrd didnt load"
import MySQLdb
except:
print "mdb,xlrd didnt load"
main()
Run Code Online (Sandbox Code Playgroud)
我安装的virtualenv已经安装了xlrd.这是我在网页上得到的输出:
Adidnt workBhello xlrd didnt load
Run Code Online (Sandbox Code Playgroud)
有意义的是xlrd没有加载,但为什么源命令不起作用?这一切都在SSH中工作
根据文档,activate在shell中获取脚本只是调整$PATH环境变量以指向virtualenv的bin目录.此脚本无法在PHP中运行,因为出于安全原因,外部可执行文件永远不会修改调用方的环境.
文档还告诉您可以做什么:
如果您直接从virtualenv的
bin/目录(例如path/to/env/bin/pip或/path/to/env/bin/python script.py)运行脚本或python解释器,则无需激活.
因此,您只需指定Python安装的完整路径:
$result = system("ENV/bin/python test.py");
Run Code Online (Sandbox Code Playgroud)