当前位置:  开发笔记 > 编程语言 > 正文

python模块dlls

如何解决《python模块dlls》经验,为你挑选了2个好方法。

有没有一种方法,使一个Python模块加载DLL在我的应用程序目录,而不是与Python安装附带的版本,而无需对Python安装变化(当时这需要我做了一个安装程序,并小心我没"通过覆盖python模块和更改dll版本全球范围来打破其他应用程序的人...)?

具体来说,我想python的使用sqlite3.dll的我的版本,而不是与Python附带的版本(这是旧的并没有出现有FTS3模块).



1> Glyph..:

如果您正在谈论Python模块DLL,那么只需修改即可sys.path.但是,如果您正在讨论这些DLL 链接的DLL; 即a 依赖于libfoo.dll哪一个foo.pyd,那么你需要修改你的PATH环境变量.我写了一段时间以前为PyGTK做过这样的事情,但在你的情况下,我认为应该这样简单:

import os
os.environ['PATH'] = 'my-app-dir' + os.pathsep + os.environ['PATH']

这将插入my-app-dirWindows路径的头部,我相信它也控制DLL的加载顺序.

请记住,在加载有问题的DLL之前,您需要执行此操作,即在导入任何有趣的内容之前.

但是,sqlite3可能有点特殊,因为它是用Python分发的; 快速测试这显然有点棘手,所以我没有sqlite3.dll具体检查.



2> Fire Lancer..:

好吧,不管python和os路径设置为什么,python总是将pll加载到与pyd文件相同的目录中.

所以我需要将_sqlite3.pyd从python/v2.5/DLLS复制到新的sqlite3.dll所在的app目录,使其加载我的新dll,而不是python附带的那个(因为pyd文件似乎跟随PYTHONPATH,即使actaul dlls自己也不.)

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有