将 .dll 和 .pyd 文件保存在其他目录中
Posted
技术标签:
【中文标题】将 .dll 和 .pyd 文件保存在其他目录中【英文标题】:Keeping the .dll and .pyd files in other directory 【发布时间】:2014-01-24 20:46:03 【问题描述】:我正在使用 cx_Freeze 将 Python 脚本转换为 Windows 可执行文件。我正在使用 Scripts 目录中的 cxfreeze 脚本。我希望 cxfreeze 生成的可执行文件位于不同的目录中,而 .dll 和 .pyd 位于不同的目录中。当我试图将它们两个放在不同的目录中时,.exe 没有工作,我得到了
应用程序无法启动,因为找不到 python33.dll。尝试重新安装以解决此问题我知道这是因为可执行文件和 (dll's & .pyd's) 位于不同的目录中。有没有办法将它们保存在不同的目录中?
我正在使用以下命令来生成可执行文件
C:\Python33\Scripts>cxfreeze C:\Users\me\Desktop\setup.py --target-name=setup.exe --target-dir=C:\Users\me\Desktop\new_dir【问题讨论】:
Why? 把可执行文件和DLL放在同一个目录有什么问题? 无论如何,在 Windows 上,应用程序会在%PATH%
上查找 DLL,其中包括 .
,但不包括 ../Libs/
。您总是可以在可执行文件周围编写一个 .cmd 包装器,例如 PATH = %PATH%;../Libs
然后 ./Executable/MyApp.exe
... 但通常这不是一个好主意。
您在 initscript (example here) 中修改环境变量,但我认为它仍然需要在运行 initscript 之前至少找到 python33.dll。
【参考方案1】:
Windows 版 Python 确实要求主 pythonXX.dll(在本例中为 python33.dll)存在于 C:\windows\system32\
在我们将 Python 安装到不同位置、网络驱动器等的所有各种组合中,我们总是不得不使用一个小批处理文件将 pythonXX.dll 复制到 system32 目录中。
我认为 PATH 操作对您不起作用,只需尝试将 dll 复制到 system32 并查看您的问题是否消失。
再一次,如果您安装了另一个版本的 Python 并说 C:\Python33 ,那么基于 Windows 的安装程序将为您执行此操作,您将能够运行您的其他 Python 位置。
【讨论】:
以上是关于将 .dll 和 .pyd 文件保存在其他目录中的主要内容,如果未能解决你的问题,请参考以下文章