在Windows Phone 8中运行Python脚本/应用程序
本文关键字:Python 脚本 应用程序 运行 Windows Phone | 更新日期: 2023-09-27 18:14:17
我想在我的Windows Phone 8 c#应用程序中运行用Python编写的Skeinforge切片器程序。我已经确定我应该使用IronPython来做到这一点,我已经确定我可以在安装IronPython时得到的ipy.exe终端中运行Skeinforge。但我的问题是,我正在努力弄清楚如何在Windows Phone 8中使用IronPython托管和运行Python脚本。我也已经设法获得一个简单的hello world脚本在桌面Windows窗体应用程序中运行,该应用程序将应用程序控制台输出传输到调试控制台,代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;
using System.IO;
using IronPython.Hosting;
using Microsoft.Scripting.Hosting;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
DebugWriter debugW = new DebugWriter();
Console.SetOut(debugW);
}
private void button1_Click(object sender, EventArgs e)
{
TextWriter tw = new StreamWriter("Test.py");
tw.Write(scriptBox.Text);
tw.Close();
try
{
var ipy = Python.CreateRuntime();
dynamic test = ipy.UseFile("Test.py");
}
catch (Exception ex)
{
Debug.WriteLine("Error: " + ex.Message);
}
}
}
}
这是DebugWriter:
class DebugWriter : TextWriter
{
private StringBuilder content = new StringBuilder();
public DebugWriter()
{
Debug.WriteLine("Writing console to debug");
}
public override void Write(char value)
{
base.Write(value);
if (value == ''n')
{
Debug.WriteLine(content.ToString());
content = new StringBuilder();
}
else
{
content.Append(value);
}
}
public override Encoding Encoding
{
get { return System.Text.Encoding.UTF8; }
}
}
我甚至不知道如何将IronPython库添加到我的Windows Phone 8应用程序中,尽管标准库不会导入。我虽然试过用主源代码编译显然现在已经失效的Windows Phone 7库,我可以导入这些库,但是当我尝试运行我的hello world脚本时,我在调试终端上绝对没有响应。
你们有谁知道如何在Windows Phone 8中工作吗?如果你知道如何在Windows 8/Metro/RT中做到这一点,那么这也可能适用于WP8。
更新:我再次查看了调试输出,当尝试使用WP7库运行hello world脚本时,我似乎得到了这个错误:
A first chance exception of type 'System.NotImplementedException' occurred in Microsoft.Scripting.DLL
Error: The method or operation is not implemented.
我设法让Skeinforge运行在修改版本的IPY上。您可以在这里获得我的应用程序的源代码:http://skeinforgewp8.codeplex.com/