IronPython打包记录之二:外部dll和配置文件
原文链接:http://xufive.blog.163.com/blog/static/172326168201252143343849/
解决了IronPython的源码打包问题,却无法把源码中调用的外部dll文件包含进去,心情郁闷了几天。然天无绝人之路,老天爷不忍心饿不死瞎家雀。和朋友L闲聊时,说起了我的困惑,他说,有可能是路径的问题。
一语惊醒梦中人!
这是我导入dll的代码:
……
import clr
clr.AddReferenceToFile("Rcg.RFID.dll")
……
Rcg.RFID.dll 就是我的代码要调用的外部dll文件名,和调用它的源码在同一级路径下,因此使用可相对路径。该文件的绝对路径是D:\project\share_xufive\Baidu\pyReader\,增加路径代码之后的代码如下:
……
import sys
sys.path.append(r‘D:\project\share_xufive\Baidu\pyReader‘)
import clr
clr.AddReferenceToFile("Rcg.RFID.dll")
……
再次运行打包脚本,得到pyReader.dll和pyReader.exe两个文件,点击运行,见到了期望中的窗口界面!不敢高兴太早,点击按钮测试功能、查看日志问文件,一切正常。将pyReader.dll和pyReader.exe复制到他处测试,发现仍然无法正常工作。只用了一秒钟,我就想到了问题所在:缺少位置文件。把配置文件复制过来,终于大功告成!
总结:
-
调用外部动态库文件,不能使用相对路径,必须要追加该文件绝对路径到sys.path中,因为该动态库文件将和源码一起被打包到生成的目标动态库文件中。
-
资源文件、配置文件等,可以使用相对路径,这些文件不会被打包到生成的目标动态库文件中。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。