包括PYDs / DLL文件在py2exe建立

其中一个模块为我的应用程序的使用功能,从.pyd文件。 有一个选项,以排除的DLL(exclude_dlls),但有一个用于包括他们? 构建过程似乎并没有被复制在我的模块中的.pyd尽管复制文件(的.py)的其余部分。 我还需要包括一个.dll。 如何获得py2exe到包括.pyd和.dll文件?

--------------解决方案-------------

.pyd的和.dll的不同位置,在一个.pyd应该自动被modulefinder发现等收录(只要你有相应的“导入”语句),而无需做任何事情。 如果一个人被错过了,你做同样的事情,就好像一个.py文件被错过(他们都只是模块):使用“包括”选项的py2exe选项。

Modulefinder不一定会找到.DLL文件的依赖性(py2exe可以检测到一些),所以你可能需要明确包括这些,与“data_files'选项。

例如,在这里有两个.DLL的('foo.dll“和”bar.dll'),以包括和三个.pyd的('module1.pyd','module2.pyd'和'module3.pyd')至包括:

setup(name='App',
# other options,
data_files=[('.', 'foo.dll'), ('.', 'bar.dll')],
options = {"py2exe" : {"includes" : "module1,module2,module3"}}
)

您可以修改设置脚本来显式地复制文件:

script = "PyInvaders.py" #name of starting .PY
project_name = os.path.splitext(os.path.split(script)[1])[0]
setup(name=project_name, scripts=[script]) #this installs the program

#also need to hand copy the extra files here
def installfile(name):
dst = os.path.join('dist', project_name)
print 'copying', name, '->', dst
if os.path.isdir(name):
dst = os.path.join(dst, name)
if os.path.isdir(dst):
shutil.rmtree(dst)
shutil.copytree(name, dst)
elif os.path.isfile(name):
shutil.copy(name, dst)
else:
print 'Warning, %s not found' % name

pygamedir = os.path.split(pygame.base.__file__)[0]
installfile(os.path.join(pygamedir, pygame.font.get_default_font()))
installfile(os.path.join(pygamedir, 'pygame_icon.bmp'))
for data in extra_data:
installfile(data)

等等...修改,以适应,当然您的需求。

也许你可以使用data_files选项设置():

import glob
setup(name='MyApp',
# other options,
data_files=[('.', glob.glob('*.dll')),
('.', glob.glob('*.pyd'))],
)

data_files应的元组,其中每个元组包含的列表:

  1. 目标目录。
  2. 文件的列表复制。

这会不会把文件放进library.zip,这不应该是一个动态链接库的问题,但我不知道PYD文件。

如果他们没有被自动检测到,尝试手动将其复制到py2exe的临时构建目录。 它们将被包括在最后的可执行文件。

我想出了一个方法,包括手动最终的可执行文件中的任何DLL。 我只用了Python 3版本的py2exe中进行了测试。

基本上,你需要修补的方法all_dlls这里面py2exe.dllfinder.DllFinder 例如,以下内容添加到您的setup.py脚本。

old_all_dlls = py2exe.dllfinder.DllFinder.all_dlls

def all_dlls(self):
self._dlls['C:\\oci.dll'] = {'C:\\cx_Oracle.pyd'}
print(self._dlls)
return old_all_dlls(self)

py2exe.dllfinder.DllFinder.all_dlls = all_dlls

在这个例子中,我包括oci.dll

请阅读我的博客文章关于它如何工作的更多信息。

分类:蟒蛇 时间:2012-01-01 人气:1
分享到:

相关文章

  • MSVC - 升压::蟒蛇静态链接到为.dll(.pyd) 2014-07-11

    我有一个VS10的项目. 我想建立一些C ++代码,这样我就可以在Python中使用它. 我也跟着提升教程,并得到它的工作. 然而VS保持联系起来升压蟒蛇-VC100-MT-GD-1_44.lib但它只是一个包装这就要求升压蟒蛇-VC100-MT-GD-1_44.dll. 这就是为什么我需要复制.dll文件和我的.DLL(.pyd)文件. 所以,我要链接增强:静态蟒蛇到.DLL(.pyd)文件. 但我就是找不到VS或编译器和连接器手册有任何配置选项. * LIB是静态库所以没关系 - 最奇怪的是

  • 如何安装MSVCR90D.DLL 2014-06-26

    如何安装MSVCR90D.DLL? 我有一个小的测试DLL(调试模式),我创建了一个安装项目. 在我的安装项目,我包括我在我的虚拟机上安装的DLL合并模块及政策vc90_debugcrt_x86.msm等,依赖学步车仍然报告说MSVCR90D.DLL无法找到? 提前致谢. --------------解决方案------------- 看这里. 准备一个试验机运行调试可执行文件 Microsoft不正式支持部署的开发/测试环境之外的调试运行时,但你可以把它的工作,如果你需要. 听起来这是一个香草

  • 如何安装wldlog.dll 2012-01-17

    如何安装wldlog.dll --------------解决方案------------- 嗨, 1.什么是你正在面对电脑的确切问题? 2.当你到底得到这个错误信息? 3.你是否尝试下载并恢复Windows Live Messenger的? 4.您是否收到任何错误讯息? Wldlog.dll是的Windows Live或Windows Live Messenger的一部分. 所以,我建议你重新安装该应用程序. "我怎么卸载一个或多个精华节目?"http://explore.live.

  • 我们怎样才能保护自己免受安装的DLL具有相同名称的一些我们的为C其他第三方:\ WINDOWS? 2012-01-24

    我们的产品包括来自开源构建与默认名称的文件,交付的开源开发几个DLL文件. 我们小心地安装在自己的目录下的文件,我们仔细地管理搜索路径(仅适用于我们的流程),以保持装载机高兴. 另一个开发商 - 高耸的智慧 - 决定这将是更容易安装自己构建一些相同的开源到C:\ Windows下的相同的默认DLL文件名. 因此,当我们启动一个进程取决于这些开源的DLL时,系统会搜索C:\ WINDOWS我们目录之前,发现被其他开发商安装的DLL. 它们是,当然,不兼容. 思路已发生,我至今: 重命名我们所有的D

  • 获取消息作为安装sdisd.dll尝试下载软件打印机 2012-02-11

    原标题:安装sdisd.dll 喜有人帮我这么计算机无奈我刚刚购买的驱动程序侦探为我的司机对我的桌面上的HP反正我一直有麻烦,下载一真一说我需要为我的打印机之前更新它指出intall的sdisk .ll我不明白的可以有人请用英文解释是什么意思?????? --------------解决方案------------- 嗨, 感谢您对张贴在微软社区的问题! 尝试下载软件,打印机收到消息作为安装sdisd.dll. 为了帮助您更好,我们需要更多的信息. 1.它是完整的错误消息? 2.什么是计算机的品

  • 需要安装unwinapi.dll。 2012-02-29

    原标题:unwinapi.dll 我试图拉起像开放式办公某些事情,并不断得到一个消息,我需要安装unwinapi.dll. 我想确保我从一个安全的地方安装. 我曾试图改变一些事情在我的控制面板,使我的电脑运行速度更快,我搞砸的事情了,而不是和我的电脑是非常,非常缓慢. 我做这种类型的事情在我的电脑,我做的时间之前,并与搞砸了,我甚至不记得我做过什么. 帮助,帮助帮助! --------------解决方案------------- 嗨桑迪, 1.哪些Windows操作系统您使用的? 2.什么是完

  • 我必须d3drm.dll我在Windows资源管理器 - 计算机,如果不是请安装它,或者告诉我如何安装d3drm.dll 2012-03-28

    Windows资源管理器D3dRM.DLL 我必须d3drm.dll我在Windows资源管理器 - 计算机,如果不是请安装它,或者告诉我如何安装d3drm.dll --------------解决方案------------- 检查您的硬盘上的任何错误: 单击开始 类型:CMD,从结果来看,右键单击CMD 点击"以管理员身份运行" 在命令提示符下键入:CHKDSK / R / F 当您重新启动您的系统,您的计算机将错误,并尝试扫描将作出改正. 然后: 单击开始 类型:CMD,从结果来

  • 如何正确安装MSVCR71.DLL 2012-04-12

    我如何在Windows Server 2003,这是需要用我的软件安装MSVCR71.DLL. 我真的不希望这个DLL复制到system32文件夹下,因为它可能会打破这一目标系统. --------------解决方案------------- 只要将其复制到你的程序的所有可执行文件将在文件夹中. 这是标准做法. 搜索库,从那里发出请求的可执行文件所在的目录开始的,所以除非LoadLibraryEx()与LOAD_WITH_ALTERED_SEARCH_PATH使用该会工作还好吧. 该.dll不

  • 如何在Windows上安装freeimage.dll? 2012-04-20

    如何注册/在我的Windows XP机器上安装freeimage.dll? 我有下载库,并打开我的命令解释程序指向FreeImage的文件夹. 我跑regsvr32但库将不会安装. --------------解决方案------------- 只要将它复制到本地或Windows /系统目录中,只有ActiveX和COM服务器都需要REGSVR32. 也许本库没有的fullfilled依赖. 尝试使用这个工具检查其依赖关系:http://www.dependencywalker.com/该软件将

  • 我如何在Windows 7安装CDONTS.DLL? 2012-08-11

    原标题:"CDONTS" 我如何在Windows 7安装CDONTS.DLL? 我在哪里可以下载Windows 7的正确版本. 谢谢 --------------解决方案------------- 嗨Gfcb5624, 1.您收到任何错误讯息? 2,如果是的话那么什么是确切的错误信息? 3.当你面临这个问题? 4.你最近做的计算机上的任何软件/硬件变化? 5.当你正好收到此提示信息或错误信息? 感谢致敬: I. Suuresh库马尔-微软技术支持. 请访问我们的微软回答反馈论坛,让我们

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.669 (s). 10 q(s)