2010-08-27 85 views
1
from distutils.core import setup 
import py2exe,sys,os 

sys.argv.append('py2exe') 

try: 
     setup(
    options = {'py2exe': {'bundle_files': 1}}, 
    console=['my_console_script.py'], 
    zipfile = None, 
    ) 
except Exception, e: 
print e 

輸出:py2exe錯誤的MSVCR80.DLL

> running py2exe 
> *** searching for required modules *** 
> *** parsing results *** 
> *** finding dlls needed *** Traceback (most recent call last): File 
> "C:\scripts\download_ghost_recon\setup.py", 
> line 26, in <module> 
>  zipfile = None, File "C:\Python26\lib\distutils\core.py", 
> line 162, in setup 
>  raise SystemExit, error SystemExit: error: MSVCR80.dll: No 
> such file or directory 

我對蟒蛇2.6在Windows 7

所以,我怎樣才能使這個MSVCR80.DLL錯誤消失,並編譯我的腳本?

在其他腳本上,我可以運行相同的setup.py並且不會收到此錯誤。

這讓我覺得,在這個腳本,py2exe需要這個MSVCR80.DLL

我也試過這個代碼,我發現這裏: http://www.py2exe.org/index.cgi/OverridingCriteraForIncludingDlls 但它也沒有工作。

from distutils.core import setup 
import py2exe,sys,os 

origIsSystemDLL = py2exe.build_exe.isSystemDLL 
def isSystemDLL(pathname): 
     if os.path.basename(pathname).lower() in ("msvcp71.dll", "dwmapi.dll"): 
       return 0 
     return origIsSystemDLL(pathname) 
py2exe.build_exe.isSystemDLL = isSystemDLL 

sys.argv.append('py2exe') 

try: 
     setup(
      options = {'py2exe': {'bundle_files': 1}}, 
      console=['my_console_script.py'], 
      zipfile = None, 
      ) 
except Exception, e: 
    print e 

*編輯 我也運行了這個文件在我的電腦上搜索,它是在這些位置發現:

C:\Windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.762_none_10b2f55f9bffb8f8 
C:\Windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4053_none_d08d7da0442a985d 
C:\Windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4927_none_d08a205e442db5b5 

回答

2

附加到您的來電setup

{ 'py2exe': { ..., 
       'dll_excludes': [ 'msvcr80.dll', 'msvcp80.dll', 
           'msvcr80d.dll', 'msvcp80d.dll', 
           'powrprof.dll', 'mswsock.dll' ] }, ... 

如果您想在應用程序中包含可視化C運行庫DLL,請查看Microsoft的可分發運行時下載廣告。可能您正在使用在此應用程序中導入的庫或模塊,但不是您所說的其他模塊。檢查是否可以使用Visual Studio 2008重新編譯它們可能是一個好主意,因爲這是用來創建標準Python 2.6 Windows版本的。

+0

我很困惑..你想讓我包含這些文件,但是在你編寫的代碼中有'dll_exludes'。不管怎麼說,這次編譯沒有錯誤,但是當我啓動編譯的腳本時,它會出錯並閃爍在看到錯誤信息之前很快就可以了 – russo 2010-08-27 07:07:34

+0

你必須告訴py2exe不要複製這些文件,然後你可以自己複製這些文件,應用程序很快就會消失,這是因爲應用程序找不到DLL它需要查看可重新分發的運行時下載:http://www.microsoft.com/downloads/details.aspx?FamilyId=32BC1BEE-A3F9-4C13-9C99-220B62A191EE並將這些DLL複製到您的應用程序目錄中。可能想要爲VS2008運行時庫執行相同的操作 – Ivo 2010-08-27 07:16:49

+0

噢,所以你的意思是在腳本已經編譯完成之後複製它們,並將它們放在與編譯的應用程序相同的目錄中? 有沒有一種方法可以做到這一點,所以我最終需要的是一個EXE來運行該程序?我試圖結束一個單一的exe來運行prog。 – russo 2010-08-27 18:37:31