如何让程序使用未在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.exe到dev\bin\
并因此与python27.dll一起工作,但这会引入一个包维护开销和许多其他集成问题我们真的不需要处理
答案 0 :(得分:4)
您需要将python27.dll
的副本放在C:\dev\apps\3rdparty
。
始终在PATH之前搜索System目录,但可执行目录位于其中任何一个之前 - 请参阅MSDN中的Dynamic-Link Library Search Order。