当前位置:首页 > 主打产品 >

如果只是一个脚本解释器 Python简直是大材小用

  • 2017-09-11 14:25:12
  • 浏览:
  • 作者:admin
如果只是一个脚本解释器 Python简直是大材小用 我从来没有在项目中用过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我都很喜欢,最终在项目中用什么要看具体需求,深入的了解它们,最终都是开发利器。

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:仙桃SEO http://xiantao.raoyu.net

上一篇:经典算法学习——直接插入排序

下一篇:最后一页