相关疑难解决方法(0)

编译IronPython WPF项目到exe

打包IronPython应用程序进行部署的最佳方法是什么?在浏览网页后,我提出的最好的事情(以及我目前正在做的事情)是将clr.CompileModules()我整个项目的.py文件粘合到一个.dll中,然后单独run.py执行此操作来运行dll:

import clr
clr.AddReference('compiledapp.dll')

import app
Run Code Online (Sandbox Code Playgroud)

但这仍然不是最理想的,因为这意味着我必须这样做

  1. 分发3个文件(the .dll,the .xamlrun.py启动器)
  2. 在主机上安装IronPython

此外,在IronPython与Visual Studio 2010进行了精彩的集成之后,感觉如此...... hacky.我完全不知道为什么没有针对IPy应用程序的集成构建系统,因为它总体上归结为IL无论如何.

理想情况下,我希望能够以某种方式.exe.xaml内部合并一个单独的内容(我读到C#apps将XAML编译为BAML并将它们合并到可执行文件中),并且不需要安装IronPython来运行.这至少有一半可能吗?(我想如果exe需要一些额外的.DLL或者其他东西就可以了.重要的是它是.exe格式的.)


一些编辑要澄清:我已经尝试了pyc.py,但它似乎并不承认我的项目不仅仅是这样的事实app.py.它产生的exe的大小表明它只是"编译" app.py而不包含任何其他文件到exe中.那么,我如何告诉它编译我的项目中的每个文件?

为了帮助可视化,这是我项目的解决方案资源管理器窗口的屏幕截图.


编辑II:遗憾的是,唯一的方法是使用pyc.py并将每个文件作为参数传递给它.我对这种方法有两个问题:

  1. 我怎么可能处理一个大的命令行?命令中最多包含256个字符.
  2. pyc.py如何知道保存包/文件夹结构?如上面的项目截图所示,我的编译程序如何知道访问子文件夹中的模块,例如访问DT\Device?层次结构是否以某种方式"保留"在dll中?

编辑III:由于通过pyc.py命令行传递70个文件名将是不实用的,为了解决更优雅地构建IPy项目的问题,我决定增加pyc.py.

我添加了.pyproj通过/pyproj:参数读取文件的代码,解析XML,并从那里获取项目中使用的py文件列表.这一直很好; 但是,生成的可执行文件似乎无法访问属于我的项目的python子包(子文件夹).我的版本pyc.py与我的.pyproj阅读支持的补丁可以在这里找到:http://pastebin.com/FgXbZY29

当这个新pyc.py项目在我的项目上运行时,这是输出:

c:\Projects\GenScheme\GenScheme>"c:\Program Files (x86)\IronPython 2.7\ipy.exe"
pyc.py /pyproj:GenScheme.pyproj /out:App /main:app.py /target:exe
Input Files:
        c:\Projects\GenScheme\GenScheme\__init__.py
        c:\Projects\GenScheme\GenScheme\Agent.py
        c:\Projects\GenScheme\GenScheme\AIDisplay.py
        c:\Projects\GenScheme\GenScheme\app.py …
Run Code Online (Sandbox Code Playgroud)

python wpf ironpython visual-studio-2010

22
推荐指数
3
解决办法
8272
查看次数

Ironpython 2.6 .py - > .exe

我已经尝试使用py2exe(与ipy不兼容)和PYC(过时).任何人都可以指向一个好的编译器的方向?

ironpython compilation

18
推荐指数
2
解决办法
2万
查看次数