ironpython怎么编译_将IronPython WPF项目编译为
打包IronPython应用程序进行部署的最佳方法是什么?在搜索完网页之后,我想到的最好的办法(以及我目前正在做的)是使用clr.CompileModules()将整个项目的.py文件粘合到一个.dll中,然后使用一个run.py来运行该dll:import clr
clr.AddReference('compiledapp.dll')
import app
不过,这还不是最理想的,因为这意味着我必须分发3个文件(.dll、.xaml和run.py启动程序)
在主机上安装IronPython
另外,这感觉太。。。hacky,在IronPython与Visual Studio 2010完美集成之后。我完全搞不懂为什么IPy应用程序没有集成的构建系统,不管怎么说都归结为IL。
理想情况下,我希望能够有一个单独的.exe,其中.xaml以某种方式合并在内部(我读到C#apps将XAML编译成BAML并将它们合并到可执行文件中),并且不需要安装IronPython就可以运行。这至少有一半的可能吗?(我想如果exe需要一些额外的.DLLs或者其他东西,这是可以的。重要的是它是.exe格式的。)
一些编辑澄清了:我已经尝试了pyc.py,但似乎不承认我的项目不仅仅是app.py。它生成的exe的大小表明它只是“编译”app.py,而没有将任何其他文件包含到exe中。那么,如何告诉它编译我项目中的每个文件?
编辑二:不幸的是,唯一的方法是使用pyc.py并将每个文件作为参数传递给它。对于这种方法,我有两个问题:如何处理这么大的命令行?一个命令最多可包含256个字符。
pyc.py如何知道如何保留包/文件夹结构?如上面的项目截图所示,我编译的程序如何知道访问子文件夹中的模块,例如访问DT\Device?层次结构是否以某种方式“保留”在dll中?
Edit I I I:由于通过命令行将70个文件名传递给pyc.py将非常困难,为了更优雅地构建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
c:\Projects\GenScheme\GenScheme\BaseDevice.py
c:\Projects\GenScheme\GenScheme\BaseManager.py
c:\Projects\GenScheme\GenScheme\BaseSubSystem.py
c:\Projects\GenScheme\GenScheme\ControlSchemes.py
c:\Projects\GenScheme\GenScheme\Cu64\__init__.py
c:\Projects\GenScheme\GenScheme\Cu64\agent.py
c:\Projects\GenScheme\GenScheme\Cu64\aidisplays.py
c:\Projects\GenScheme\GenScheme\Cu64\devmapper.py
c:\Projects\GenScheme\GenScheme\Cu64\timedprocess.py
c:\Projects\GenScheme\GenScheme\Cu64\ui.py
c:\Projects\GenScheme\GenScheme\decorators.py
c:\Projects\GenScheme\GenScheme\DeviceMapper.py
c:\Projects\GenScheme\GenScheme\DT\__init__.py
c:\Projects\GenScheme\GenScheme\DT\Device.py
c:\Projects\GenScheme\GenScheme\DT\Manager.py
c:\Projects\GenScheme\GenScheme\DT\SubSystem.py
c:\Projects\GenScheme\GenScheme\excepts.py
c:\Projects\GenScheme\GenScheme\FindName.py
c:\Projects\GenScheme\GenScheme\GenScheme.py
c:\Projects\GenScheme\GenScheme\PMX\__init__.py
c:\Projects\GenScheme\GenScheme\PMX\Device.py
c:\Projects\GenScheme\GenScheme\PMX\Manager.py
c:\Projects\GenScheme\GenScheme\PMX\SubSystem.py
c:\Projects\GenScheme\GenScheme\pyevent.py
c:\Projects\GenScheme\GenScheme\Scheme.py
c:\Projects\GenScheme\GenScheme\Simulated\__init__.py
c:\Projects\GenScheme\GenScheme\Simulated\Device.py
c:\Projects\GenScheme\GenScheme\Simulated\SubSystem.py
c:\Projects\GenScheme\GenScheme\speech.py
c:\Projects\GenScheme\GenScheme\stdoutWriter.py
c:\Projects\GenScheme\GenScheme\Step.py
c:\Projects\GenScheme\GenScheme\TimedProcess.py
c:\Projects\GenScheme\GenScheme\UI.py
c:\Projects\GenScheme\GenScheme\VirtualSubSystem.py
c:\Projects\GenScheme\GenScheme\Waddle.py
Output:
App
Target:
ConsoleApplication
Platform:
ILOnly
Machine:
I386
Compiling...
Saved to App
所以它正确地读取了.pyproj中的文件列表。。。伟大的!但是运行exe给了我这个:Unhandled Exception: IronPython.Runtime.Exceptions.ImportException:
No module named Cu64.ui
因此,尽管编译中显然包含了Cu64\ui.py,但运行exe时却找不到它。这就是我在上一次编辑中第2点所害怕的。如何保留项目的包层次结构?也许需要分别编译每个包?
我会延长这个问题的奖金。最终,我希望我们可以得到一个工作的pyc.py,它可以读取pyproj文件并一步生成工作的exe。然后也许它甚至可以提交到IronPython的codeplex中,以包含在下一个版本中。。。;]
ironpython怎么编译_将IronPython WPF项目编译为相关推荐
- java文件编译_【java】javac编译多个有依赖关系的java文件为class文件
历史文章: [javac命令不能使用,提示不是内部命令或外部命令,请查看历史文章] =================需求说明========================== 之前的文章中,仅说明 ...
- python so反编译_使用cython把python编译so
1.需求 为了保证线上代码安全和效率,使用python编写代码,pyc可直接反编译,于是把重要代码编译so文件 2.工作 2.1 安装相关库: pip install cython yum insta ...
- ipa文件反编译_手把手教你反编译别人的app
虽然iOS系统相比于其他手机操作系统相对安全,但是这个安全并不是绝对的,我一直相信,道高一尺魔高一丈.此文想以实际例子出发,告诉大家,如何去反编译一个app,并且从某个角度来说,iOS没有传说中的&q ...
- ipa文件反编译_手把手教你反编译别人的iOS App
下载智可网手机app可以学习更多哦! 虽然iOS系统相比于其他手机操作系统相对安全,但是这个安全并不是绝对的,我一直相信,道高一尺魔高一丈.此文想以实际例子出发,告诉大家,如何去反编译一个app,并且 ...
- java无ide编译_[转]无IDE时编译和运行Java
本文由 ImportNew - Grey 翻译自 dzone.欢迎加入Java小组.转载请参见文章末尾的要求. 最近Java subreddit出现了一篇"在没有IDE的情况下编译Java包 ...
- java 混淆编译_贴一段自动编译java,并混淆编译的代码
刚写的一个自动编译.混淆.打包jar的代码,做个记录 用到的NuGet: using Ionic.Zip; using System; using System.Collections.Generic ...
- 命令行编译_[Bazel]自定义命令行编译标志
1 名词 2 背景 3 自定义构建设置的定义 4 自定义构建设置的实现和实例化 5 自定义规则绑定自定义构建设置 6 小结 7 参考资料 1 名词 这里名词只做个索引,方便理解,可能现在反而让理解变得 ...
- keil使用命令行编译_用c51命令行编译HEX单片机文件
刚开始学STC51单片机的开发,用Keil uVision4进行编辑和编译.Keil的IDE是使用工程方式组织,对于小弟初学并不是很方便. 每次做个试验都要建立一个工程,而且会出现一堆文件. 虽然电脑 ...
- java jar防止反编译_防止Jar包被反编译
方法就是,向Jar注入无效代码(不合法的,或者根本不是代码的字符串). 那么无效的代码又怎么能正确运行呢? 答案就是,你要保证你的代码永远不会执行到那一步. 我作一个简单的例子说明: 我们建立一个项目 ...
- java8编译_为什么在Java7中编译而在Java8中编译?
泛型是棘手的. 看起来它们在不同版本的 Java中被区别对待. 此代码在Java 7中成功编译,无法使用Java 8进行编译. import java.util.EnumSet; public cla ...
最新文章
- ASP.NET Core结合Nacos来完成配置管理和服务发现
- 网络安全技术文章征稿启事
- 个人成长:拉开你和同龄人差距的100个顶级认知
- html5支持多线程,html5 多线程
- 自定义异常throw
- SQLiteDatabase中query、insert、update、delete方法参数说明
- Clion配置Ros环境
- python求偏度系数_python pandas库和stats库计算偏度和峰度(附程序)
- java设置手机后台进程限制_当应用程序在Android Pie上受到后台限制时启动前台服务...
- magisk卸载内置软件_如何卸载/恢复iPhone自带的内置应用?
- 华为云备份会上传私密相册吗_云相册有哪些作用?上传照片会不会占用手机内存?...
- 正是岳麓好风景,软件逢君正当时
- 学习AlphaGo理论知识-----part two
- 神奇宝贝java_我的世界下载 1.25神奇宝贝整合包_单机游戏下载
- 三种经典图像滤波方法介绍——双边滤波(Bilateral filter)、导向滤波(Guided Fliter)、滚动导向滤波(RollingGuidedFilter)
- C语言 计算签到所得积分
- JAVA计算机毕业设计物料追溯系统(附源码、数据库)
- firefox 绿色护眼
- NS3 仿真系列资料大全
- 笔记本宏碁 4750G加装固态硬盘小计
热门文章
- 毕设题目:Matlab图像增强
- 【图像去噪】基于matlab邻域+中值滤波图像去噪【含Matlab源码 961期】
- unity和python哪个好学_纠结学习Python还是unity3d_课课家教育
- python3自动化软件发布系统_PythonPC客户端自动化实现原理(pywinauto)
- Python 安装skimage即Scikit-Image
- 磁盘剩余空间策略_Linux性能监控常用的命令:监控磁盘使用情况-df命令
- fluent 对电机油冷分析_如何避免发电机过热引起的能源损耗?
- 千兆网卡为什么慢_宽带300M,光猫是千兆的,电脑网卡和无线路由器都是千兆的。但是速度仍是100M。这是为什么?...
- 计算机装调与维护报告,Vmware workstation在计算机装调与维护实训中的应用
- 计算机硬件英语单词有哪些,计算机硬件英语词汇