3

如何让程序使用 Windows 注册表中未列出的 Python,而不是在 Windows 系统路径中搜索 PythonXX.dll?

鉴于此布局:

C:\dev\bin\python.exe
C:\dev\bin\python27.dll          <-- our version
PYTHONHOME=C:\dev\apps\Python27  <-- DLLs, Lib, site-packages, etc.

C:\Windows\System32\Python27.dll <-- incompatible version!

我们需要其他程序来使用我们的 .dll,但他们首先找到不兼容的系统并失败:

SET PATH=C:\dev\bin
C:\dev\apps\3rdparty\foo.exe
   <<fails to start>>

rename C:\Windows\System32\python27.dll C:\Windows\System32\python27.dll.orig
C:\dev\apps\3rdparty\foo.exe
   <<runs just fine>>

删除或删除系统 .dll 不是一种选择,以上仅用于说明。我们可以将它整合到 foo.exedev\bin\并因此与 python27.dll 一起工作,但这会引入包维护开销和许多我们真的不想处理的其他集成问题。

4

1 回答 1

4

您需要将您的副本python27.dll放入C:\dev\apps\3rdparty.

System 目录总是在 PATH 之前搜索,但可执行目录位于其中任何一个之前 - 请参阅MSDN 中的Dynamic-Link Library Search Order

于 2013-04-26T21:55:37.850 回答