![](/img/trans.png)
[英]Error loading Python dll/ LoadLibrary: The specified module could not be found
[英]LoadLibrary: The specified procedure could not be found
我需要在 Windows 2003 服務器(是的,在 2019 年)中提取有關系統進程的一些內容,我在 python 中編寫了該代碼,並使用auto_py_to_exe
對其進行了auto_py_to_exe
當我在服務器上運行.exe
文件時,我收到一條錯誤消息"LoadLibrary: The specified procedure could not be found."
指的是python37.dll
我嘗試像一個目錄一樣編譯(包含特定的 dll),我嘗試像一個文件一樣編譯,我得到以下輸出。
Python 3.7和Win 2003之間的差距太大。 查看[Python.Wiki]:WindowsCompilers Python 3.7甚至沒有列出(因為它是使用VStudio 2017構建的)。 那(和Python本身)將需要/調用Win 2003系統.dll中不存在的函數。
這是一個例子。 在下面的圖像中,我使用Dependency Walker打開了2個版本的( 2.7和3.7 )主.dll文件 :
如圖所示,兩者都從kernel32.dll導入了一堆函數。 但是一個區別是python37.dll導入GetTickCount64 。 根據[MS.Docs]:GetTickCount64函數 ,支持該功能的最低Server版本是Win 2008 ,這意味着它在Win 2003中將無法使用 。
因此,您必須回到python 2.7 (頂部)。 幾年前,我已經用VStudio 2010構建了Python 2.7.10 ,並且可以在Win 2003 (和XP SP 1 )上運行。 最有可能的是,這也適用於最新的( 2.7 )版本。
請注意,您還必須安裝腳本中使用的所有軟件包(包括auto-py-to-exe )。
@ EDIT0 :
我記得(並剛剛檢查過)我在XP ( SP 3 ) PC上安裝了Python 3.4.3 。 因此, Python 3 ( 3.5之前的版本)很有可能在Win 2003上運行 。
@ EDIT1 :
最后,我有一些官方聲明:在Python官方頁面上,將鼠標懸停在“ 下載 ”按鈕上會產生:
請注意,Python 3.5+ 不能在Windows XP或更早版本上使用。
或(更清晰):
請注意, 這不一定意味着可以保證較早的版本可以工作。 因此,您需要做一些測試(我建議在目標計算機上安裝Python和必需的軟件包,並且只有在一切都成功后才進行打包)。
@ EDIT2 :
我提到我已經構建了Python2.7版本。 psutil 是其中的一部分。
>>> import sys, platform, psutil >>> sys.version, sys.platform ('2.7.10 (default, Mar 8 2016, 15:08:43) [MSC v.1600 32 bit (Intel)]', 'win32') >>> platform.platform() 'Windows-XP-5.1.2600-SP3' >>> psutil.__version__ '3.1.1'
我沒有提到我建立psutil來源,但預建.whl S和也贏得安裝程序可供下載: [PyPI中]:psutil 3.1.1 -下載文件 。
最后我使用了python 2.7.9和py2exe,它解決了,但是PSutil不兼容Windows 2003 Server:c
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.