我的应用程序的其中一个模块使用.pyd文件中的函数。有一个选项可以排除dll(exclude_dlls),但是有一个选项可以包含它们吗?尽管复制了其他文件(.py),但构建过程似乎并未复制模块中的.pyd。我还需要包含一个.dll。如何让py2exe包含.pyd和.dll文件?在py2exe版本中包含PYD/DLL
回答
如果没有自动检测到,请尝试手动将它们复制到py2exe的临时构建目录中。它们将被包含在最终的可执行文件中。
您可以修改设置脚本文件明确复制:
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应该是元组,其中每个元组包含的列表:
- 的目标目录。
- 要复制的文件列表。
这不会把文件放到library.zip中,这对dll应该不是问题,但我不知道pyd文件。
.pyd和.DLL在这里是不同的,因为一个.pyd应该被modulefinder自动发现并包含在内(只要你有相应的“import”语句)而不需要做任何事情。如果有人错过了,你会做同样的事情,就好像一个.py文件错过了(它们都只是模块):使用py2exe选项的“include”选项。
Modulefinder不一定会找到.DLLs(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"}}
)
在当前版本的py2exe中,data_files应该如下所示: data_files = [(DIR,[FILE,FILE,FILE]),...] – 2010-03-02 20:28:00
- 1. 包含py2exe的文件夹
- 2. Py2exe不包含模块
- 3. py2exe包含.exe中的MSVC DLL
- 4. 在Doxygen中包含POM版本?
- 5. 在调试版本中包含资源
- 6. 在jar版本中包含git commit hash
- 7. 在requirements.txt中包含python版本?
- 8. 如何在包含lib的文件名中包含版本号?
- 9. REST API版本控制。在新版本中包含什么?
- 10. 我的版本包含AppName.exe.config?
- 11. py2exe或pyinstaller未能包含jaraco.util
- 12. 如何在NuGet转换文件中包含当前包版本?
- 13. Py2exe的版本号为com dll
- 14. 如何在JAVA中包含电子邮件的文本版本
- 15. 如何在Sandcastle版本中包含构建日期和版本号
- 16. jQuery的更有效的版本包含
- 17. Statsmodels版本0.6.1不包含tsa?
- 18. 检查行包含版本号
- 19. 包含版本的文件格式
- 20. 什么版本的.NET包含RuntimeMethodHandle.EmptyHandle?
- 21. 包含两个不同小数位的排序版本版本
- 22. 在发行版中包含Psyco文件
- 23. 如何在母版页中包含CSS?
- 24. 在Eclipse中包含正确版本的头文件CDT
- 25. 在目标目录中包含产品版本
- 26. 如何在sbt-native-packager rpm版本中包含libsigar?
- 27. 在库的Mac OS X SDK中包含一个调试版本
- 28. 如何在angular2最终版本中包含Bootstrap.css
- 29. 如何在发布版本中包含声音剪辑
- 30. 如何在yeoman中包含较少的bootstrap版本?
是的,但理想情况是应该是setup.py脚本的一部分,或放入我的批处理脚本以创建可执行文件。 – TheObserver 2008-10-21 05:13:08