从其他语言调用Python的通用(或最佳)选项?

时间:2016-03-19 14:48:05

标签: python shared-libraries cross-platform

我用Python创建了一个库。我可以在Linux或Windows上使用它。我希望能够从大多数非Python脚本/程序中调用它。理想情况下,如果可能的话,我想要一个跨平台选项,但Linux是目前最重要的选项。除了通过命令提示符界面和进行系统调用/ ShellExec样式使用脚本之外,还有其他方法吗?如果这是所有基于Windows的编程,例如,我可以创建一个DLL ...虽然如果我可以直接使用该库从Linux中的php和Windows中的C ++等等,这将是非常棒的。任何想法?

2 个答案:

答案 0 :(得分:1)

由于您说您不想使用命令行界面,因此跨平台访问服务的逻辑答案是使用Web API。并且,通过这样做,API的使用者可以在与提供者不同的OS上运行。

我在遵循此blog post之前设置了API。有一个更完整的python选项列表here

答案 1 :(得分:0)

拨打电话是一个广泛的描述,解决方案取决于您是否要提供和接收这些电话的输出。如果你这样做,你可以使用JSON遵循PHP和Python之间的非常通用的解决方案。对于PHP: 注意:不是我的代码,请参阅原始here

    // This is the data you want to pass to Python
    $data = array('as', 'df', 'gh');

    // Execute the python script with the JSON data
    $result = shell_exec('python /path/to/myScript.py ' . escapeshellarg(json_encode($data)));

    // Decode the result
    $resultData = json_decode($result, true);

    // This will contain: array('status' => 'Yes!')
    var_dump($resultData);

对于Python:

    import sys, json

    # Load the data that PHP sent us
    try:
        data = json.loads(sys.argv[1])
    except:
        print "ERROR"
        sys.exit(1)

    # Generate some data to send to PHP
    result = {'status': 'Yes!'}

    # Send it to stdout (to PHP)
    print json.dumps(result)

显然,如果你不需要在PHP中使用systempopen,那就足够了。还要检查:

Question 1 Question 2