频道栏目
首页 > 程序开发 > Web开发 > python教程 > Python 解释器 扩展和嵌入 > 正文
如果只是一个脚本解释器 Python简直是大材小用
2016-01-13 11:48:51      个评论      
收藏   我要投稿
我从来没有在项目中用过Python,最多的只是用它做一个方便的Shell脚本程序,把它嵌入到C++项目之前也做过几个实验,但是一直没有坐过部署的实验,以为就是把Python.dll和boost.python的dll(如果是静态链接版这个文件就可以省略)复制到可执行文件同级目录下一起复制到目标机器上就可以。结果昨天发现不行,我用的是静态版boost.python扩展,所以需要先调用Py_Initialize,如果系统安装了Python这步就没问题,但如果卸载掉,然后把Python33.dll文件复制到可执行文件夹下调用这个Python API程序就会异常,昨晚因为这个问题我折腾到快1点也没搞定。今早上在google一查,已经有人问过这个问题,解决办法也很简单:把Python安装目录下的Lib文件夹整个复制到应用程序文件夹下即可。开始我是一个一个的按照错误提示往里复制,弄了十几个以后就没耐心了,最后把整个25.4M都复制进去,然后做减法,发现除了collections和encodings这两个文件夹外,其它目录都可以删除而不影响Python初始化。但是Lib下还有150+个py文件,再这么做减法太花时间,而且万一脚本要用到哪个组件还得往里复制,或者以后Python发布新版本也还得再逐一精简,所以就懒得清理了。如果要一个非常纤细的部署环境,又嫌逐一精简麻烦,可以先初始化一下Python,然后参考__pycache__文件夹下生成的pyc文件(Python 3.3在Py_Initialize之后会产生22个),它们都是初始化时根据所须py文件创建,然后到Lib目录下把不相关的py文件都删除即可获得一个最精简的Python嵌入版。话说回来,在这么精简的环境下,写出的脚本能有什么功能呢?一旦要用到Python内置的组件,还得再往回复制……

也就是说,要在项目中集成Python解释器,除了Python.dll,这里面应该主要实现的是譬如脚本词法分析,脚本语言的基础功能等,还要包括5M+的Python脚本库,这里面包括了诸如关键字、基础类和大多数脚本功能。应该说这算是一个大型的脚本解释器了,虽然其功能也非常强大。

相比之下,Lua就短小精悍多了,只需一个几百K的dll就可以实现脚本调用程序扩展和程序执行脚本等脚本系统最朴实的功能。当然Lua要想更进一步提供更多更能,LuaBind、LuaPlus等必不可少。

Python和Lua我都很喜欢,最终在项目中用什么要看具体需求,深入的了解它们,最终都是开发利器。

点击复制链接 与好友分享!回本站首页
相关TAG标签 解释器 脚本 只是
上一篇:5. Embedding Python in Another Application Python 解释器 扩展和嵌入
下一篇:详细说明Python解释器作用
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站