2011-06-16 81 views
6

我在64位Windows 7機器上用py2exe創建了一個可執行文件,並分發了程序。用py2exe製作的可執行文件不能在windows xp 32bit上運行

基於Windows XP的32位機程序拒絕運行表現出以下行爲:

a popup window says: program.exe is not a valid win32 application.

The command prompt window says "access denied"

我檢查權限和用戶具有完全控制和文件的完整所有權和其父目錄。所以這不是問題。

我可以想象的唯一可行的可能性是操作系統/體系結構不兼容。我應該如何解決這個問題?

我用來生成可執行setup.py文件:

from distutils.core import setup 
import py2exe 

setup(console=['xerxes2excel.py']) 

我跑到下面生成的exe:

python setup.py py2exe 
+0

嘗試使用32位機器創建可執行文件 – inspectorG4dget 2011-06-16 21:15:06

+0

說你可能創建了一個64位可執行文件,它不能在32位處理器上運行嗎? – 2011-06-16 21:16:24

+0

@jcomeau_ictx,這是我的假設。有沒有辦法在64位機器上創建32位可執行文件?通過某種模擬魔術? – 2011-06-16 21:17:20

回答

4

當在Windows 7上生成可執行文件並在Windows XP上部署時,常見問題。

根據py2exe教程,您需要包含MVC DLL。但該教程是舊的,腳本只能在一個目錄中搜索。之前,該目錄包含所有的DLL和清單,但現在它只包含DLL。您需要爲清單文件指定另一個目錄。如果你不這樣做,你會有這樣那樣的錯誤:

this application has failed to start because the application configuration is incorrect 

如果您使用的是Windows 7 64位,你需要Microsoft Visual C運行時DLL。不要忘了清單,是不是在Windows 7相同的目錄需要適應這樣的腳本:

data_files = [("VC90", glob(r'C:\Windows\winsxs\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.21022.8_none_bcb86ed6ac711f91\*.*')), 
      ("VC90", glob(r'C:\Windows\winsxs\Manifests\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.21022.8_none_bcb86ed6ac711f91.manifest')) 
] 
setup(
    data_files=data_files, 
    console = [{'script': "C:\test\my_program.py"}], 
    zipfile = None, 
) 

現在,您可以部署包含的所有文件和依賴的「DIST」目錄。

+0

你應該從glob導入glob中包含 – tovmeod 2012-02-13 23:12:20

相關問題