如何使用Adobe AIR的NativeProcess启动python脚本?

时间:2015-11-30 11:22:27

标签: python actionscript-3 flash actionscript air

我使用NativeProcess接口从AIR应用程序运行python脚本时遇到了一些麻烦。从理论上讲,这应该很简单。 Adobe甚至在ActionScript 3.0 documentation for NativeProcess中使用它作为示例,如下所示:

var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();
var file:File = File.applicationDirectory.resolvePath("test.py");
nativeProcessStartupInfo.executable = file;

它们甚至包括test.py可能包含的内容:

#!/usr/bin/python
# ------------------------------------------------------------------------------
# Sample Python script
# ------------------------------------------------------------------------------

import sys

for word in sys.argv: #echo the command line arguments
    print word

print "HI FROM PYTHON"
print "Enter user name" 
line = sys.stdin.readline()

sys.stdout.write("hello," + line)

问题是,据我所知,这根本不起作用。我尝试时遇到以下错误:

Error #3219: The NativeProcess could not be started. '%1 is not a valid Win32 application.

据推测,AIR(19.0)的最新版本不允许在没有" exe"的情况下执行任何操作。文件扩展名。以下代码似乎做了我想要的事情:

var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();
var file:File = new File("C:/Python/Python35/python.exe");
nativeProcessStartupInfo.executable = file;
nativeProcessStartupInfo.workingDirectory = File.applicationDirectory.resolvePath(".");

var processArgs:Vector.<String> = new Vector.<String>();
processArgs[0] = "test.py";
nativeProcessStartupInfo.arguments = processArgs;

这里的问题是双重的。首先,您需要知道可执行文件的绝对路径,我不能这样做。其次,代码不再是平台独立的。在Linux或Mac上,文件扩展名将是其他内容。

我想我可以通过要求%PYTHON_PATH%环境变量然后使可执行文件依赖于此来解决第一个问题。但是,我无法找到在ActionScript File对象中使用环境变量的方法。它有助于&#34;逃脱所有&#34;%&#34;在将某些内容发送到命令行之前的字符。

此时这个相当简单的问题变成了一个停滞不前的问题。有人可以帮我理解一种方法:

  1. 使用&#34; py&#34;执行某些操作。使用NativeProcess进行扩展
  2. 是否已成功解析依赖于File对象中的环境变量的路径?

0 个答案:

没有答案