如何配置 PyInstaller 在打包时将DLL文件与最终的.exe执行文件分离开来?
时间: 2024-12-16 21:24:32 浏览: 21
PyInstaller是一个用于打包Python应用程序成单个可执行文件的工具,它默认会将所有依赖库包含在内,包括动态链接库(DLL)。如果你想要在打包后分离DLL文件,可以采取以下步骤:
1. **创建独立的DLLs目录**:
在项目的根目录下,创建一个名为`dlls`或其他合适的名称的目录,并将需要分离的DLL文件放在这里。
2. **配置PyInstaller**: 使用命令行编译器`pyinstaller.py`,指定`--add-data`选项来告诉PyInstaller包含这个自定义目录中的资源。例如:
```
pyinstaller your_script.py --add-data=dlls/*.dll;dlls
```
这里的`dlls/*.dll`表示匹配dlls目录下的所有DLL文件,`dlls`是你设置的目录名。
3. **排除系统DLLs**:
如果你还想排除Windows系统自带的一些DLL,可以在`spec`文件(由`pyinstaller your_script.py -F`生成)中添加`datas`部分,指定不打包的系统DLL。例如:
```python
datas = [
('dlls/*.dll', 'dlls'),
('not_system_dlls/*.dll', '.') # 添加不打包的DLL路径
]
```
4. **运行生成的EXE**:
执行上述操作后,PyInstaller会生成一个`.spec`文件,你需要使用`pyinstaller --onefile your_script.spec`来创建新的单独exe文件,它会在同一目录下生成,DLLs将在`dist`目录中的子目录里。
5. **部署时处理DLLs**:
将你的.exe文件以及包含的DLLs一起部署到目标机器上,通常情况下,用户只需运行你的.exe即可,因为它们会被自动查找并加载。
注意:这种方法适用于那些不需要与操作系统交互的DLL,如果DLL涉及到动态链接,则需要更复杂的策略,如使用Windows的`manifest`文件等。
阅读全文