繁体   English   中英

从python或php脚本激活virtualenv而不是SSH

[英]Activate virtualenv from python or php script not SSH

我试图使用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");

?>

我有test.py =

def main():
    print "hello"

    try:
        import xlrd
    except:
        try:
            print "xlrd didnt load"
            import MySQLdb
        except:
            print "mdb,xlrd didnt load"


main()

我安装的virtualenv已经安装了xlrd。 这是我在网页上得到的输出:

Adidnt workBhello xlrd didnt load

有意义的是xlrd没有加载,但为什么源命令不起作用? 这一切都在SSH中工作

根据文档 ,在shell中获取activate脚本只是调整$PATH环境变量以指向virtualenv的bin目录。 此脚本无法在PHP中运行,因为出于安全原因,外部可执行文件永远不会修改调用方的环境。

文档还告诉您可以做什么:

如果直接从virtualenv的bin/目录运行脚本或python解释器(例如path/to/env/bin/pip/path/to/env/bin/python script.py ),则无需激活。

因此,您只需指定Python安装的完整路径:

$result = system("ENV/bin/python test.py");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM