2010-09-23 43 views
17

Khi cố gắng sử dụng py2exe để chuyển đổi một trò chơi Python đơn giản tôi đã sang định dạng exe, nó đã cho tôi những lỗi sau:py2exe: DLL load thất bại

Traceback (most recent call last): 
    File "C:\Users\Tali\Desktop\2exe.py", line 4, in <module> 
    setup(console=['test.py']) 
    File "C:\Python\lib\distutils\core.py", line 152, in setup 
    dist.run_commands() 
    File "C:\Python\lib\distutils\dist.py", line 953, in run_commands 
    self.run_command(cmd) 
    File "C:\Python\lib\distutils\dist.py", line 972, in run_command 
    cmd_obj.run() 
    File "C:\Python\lib\site-packages\py2exe\build_exe.py", line 243, in run 
    self._run() 
    File "C:\Python\lib\site-packages\py2exe\build_exe.py", line 305, in _run 
    dlls = self.find_dlls(extensions) 
    File "C:\Python\lib\site-packages\py2exe\build_exe.py", line 389, in find_dlls 

    self.dll_excludes) 
    File "C:\Python\lib\site-packages\py2exe\build_exe.py", line 1021, in find_dep 
endend_dlls 
    import py2exe_util 
ImportError: DLL load failed: %1 is not a valid Win32 application. 

tôi đã tìm kiếm trên web cho khoảng một giờ, cố gắng thay đổi những thứ trong chương trình của tôi. Không có gì hiệu quả. Mặc dù chương trình của tôi sử dụng thư viện "ngẫu nhiên", nhưng tôi chưa từng thấy một trường hợp nào gây ra vấn đề này.

Các cài đặt kịch bản:

from distutils.core import setup 
import py2exe 

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

Vâng, cả hai kịch bản đang ở trong cùng một thư mục (Desktop). Nếu có vấn đề, tôi đang chạy trên Windows Vista với Python 2.7

Cảm ơn tất cả các bạn trước rất nhiều.

+0

Bạn có thể kiểm tra, nếu bạn không gặp sự cố không tương thích 64 bit/32 bit. – pyfunc

+1

Tôi có một Vista 32-bit, và không chắc chắn làm thế nào tôi phải kiểm tra cho sự không tương thích như vậy. – Niv

+0

Hãy thử chạy bộ phụ thuộc vào kết quả thực thi để xem bạn có cần gửi thêm một số phụ thuộc không ... – ChristopheD

Trả lời

0

Từ ý kiến ​​của bạn, tôi thấy rằng bạn đang làm điều này trong cửa sổ lệnh:

setup.py py2exe 

từ py2exe tutorial 's third step, bạn nên làm điều này thay vì (trong Promt lệnh):

python setup.py py2exe 

Lần xem nhận xét thứ hai về câu hỏi ban đầu cho thấy rằng đề xuất này đã được đưa ra. 1 để joaquin để cho việc này.

Để cố gắng trả lời câu hỏi của bạn một lần nữa: Joaquin cũng đã đề cập rằng đây có thể là vấn đề về đường dẫn. Thay vì cố gắng sửa lỗi đó, bạn có thể muốn xem xét tùy chọn sao chép các tệp python của bạn dễ dàng hơn vào C: \ Python. Sau đó, trong cửa sổ lệnh:

cd C:\Python 
python setup.py py2exe 

này đã luôn luôn làm việc cho tôi

Hope this helps

+0

Điều này đã được chỉ ra trong phần bình luận. Các op không thể nhận được chỉ là 'python' sản xuất vỏ python. – joaquin

+0

Tôi nghĩ rằng đó là một ý tưởng tồi để sao chép các tệp nguồn Python vào thư mục cài đặt Python. Thay vào đó, bạn nên chạy Python EXE mong muốn một cách rõ ràng, ví dụ "c: \ python \ python setup.py py2exe". Hoặc bạn nên thay đổi ổ đĩa/thư mục thành c: \ python (cd/d c: \ python) và sau đó chạy "python d: \ somefolder \ setup.py py2exe". – jarmod

0

Bạn có thể đối phó với py2exe và những lo ngại, tôi đã cố gắng làm điều này, ngay cả khi tôi đã có nó ngay , nó sẽ lỗi, mặc dù tôi đã tìm thấy chương trình python tuyệt vời gui2exe, điều này làm cho nó cực kỳ dễ dàng để làm cho một exe (hoặc bất kỳ các định dạng được hỗ trợ khác).

Gui2exe: http://code.google.com/p/gui2exe/downloads/detail?name=GUI2Exe_0.5.0.zip

Ví dụ: http://code.google.com/p/gui2exe/wiki/GUI2ExeExamples

+0

Và nó cũng làm việc cho các script không phải GUI? – Niv

+1

@niv ya nó, nó chỉ là một gui tốt đẹp mà dường như để giải quyết một số vấn đề kỳ diệu và cũng làm cho nó dễ dàng hơn (ok có thể không ma thuật nhưng vấn đề dll của tôi đã biến mất sau khi sử dụng nó) – Zimm3r

+0

Tôi đã làm điều này và nó đã cho chính xác cùng stacktrace . Nó chỉ là một lối vào cho cùng một phần mềm không làm việc. – korona

2

Hãy thử cài đặt Microsoft Visual C++ 2008 Redistributable Package (x86): http://www.microsoft.com/downloads/en/details.aspx?familyid=9B2DA534-3E03-4391-8A4D-074B9F2BC1BF&displaylang=en

+0

Điều này thực sự đã sửa nó cho tôi. Tôi đã có một vấn đề với biên dịch python python 32 bit trên một máy 64bit, với python-mysql được cài đặt. Tôi đã nhận được lỗi DLL. Nhưng tải về thời gian chạy Visual C++ 2008 x86 và sửa chữa phiên bản đã cài đặt của tôi đã hoạt động. – user1479931

33

Tôi có chính xác cùng một vấn đề.

Vì tôi có cửa sổ 7 64bit, tôi đã tải xuống py2exe-0.6.9.win64-py2.6.amd64.exe, mà tôi cho là phiên bản 64 bit của py2exe. nhưng nó không hoạt động, và tôi đã có lỗi tương tự.

Tôi đã đổi thành py2exe-0.6.9.win32-py2.6.exe và nó hoạt động tốt.

Tôi đoán bạn phải khớp với 32 bit hoặc 64 bit với cài đặt python thay vì chính cửa sổ.

bằng cách này, "setup.py py2exe" hoặc "python setup.py py2exe" thực sự không quan trọng, nếu bạn hướng dẫn các cửa sổ mở *.py python trong khi cài đặt python.

+0

Bạn chắc chắn có thể gặp sự cố nếu bạn cho rằng "setup.py" giống với "python setup.py". Nó không phải là hiếm khi có nhiều hơn một cài đặt Python trên cùng một máy (v2.x và có lẽ cả hai phiên bản 32-bit và 64-bit của v3.x). Nếu bạn chuyển đổi giữa các phiên bản Python khác nhau bằng cách sử dụng kịch bản lệnh CMD đặt biến môi trường PATH và PYTHONHOME thì "python setup.py" sẽ chạy bất kỳ python.exe nào là đầu tiên trong PATH của bạn nhưng chạy "setup.py" sẽ chạy phiên bản Python nào bạn đã cài đặt cuối cùng vì nó được liên kết với phần mở rộng PY. Vì vậy hãy cẩn thận. – jarmod

3

Tôi đã gặp vấn đề tương tự và tôi đã tìm kiếm và tôi đã đến đây. Tôi đã thử cách nhắc nhở bởi xiao-yu nhưng tôi đã không làm việc. Vì vậy, tôi tìm thấy điều này từ http://www.py2exe.org/index.cgi/Tutorial#Step52 : 5.2.1. Đóng gói thời gian chạy DLL

Nếu bạn có quyền phân phối lại MSVCR90.dll, cần có bản sao của nó trong cài đặt Visual Studio của bạn, trong VC \ redist \ x86 \ Microsoft.VC90.CRT. Kể từ Visual Studio 2008, bạn không thể chỉ sao chép tệp DLL này - bạn cũng cần tệp kê khai mà bạn sẽ tìm thấy ở đó. Tệp redist.txt tuyên bố rằng bạn phải phân phối cả ba tệp dll và tệp kê khai chưa sửa đổi và vi phạm thỏa thuận cấp phép chỉ phân phối một trong các tệp dll không có các tệp khác (mặc dù py2exe chỉ cần MSVCR90.dll.) từ tệp redist.txt như sau: -----------------------

vì vậy, hãy thử.

3

Có vẻ như vấn đề có thể được giải quyết bằng cách tải xuống trình cài đặt py2exe chính xác cho nền tảng và phiên bản của bạn.

Tôi cũng gặp vấn đề tương tự ở đây. Tôi đã chạy trên Windows 7 64 bit và đã cài đặt Python 2.7. Vấn đề của tôi đã làm với thực tế là tôi đã cài đặt py2exe-0.6.9.win32-py2.7.exe và trình cài đặt không thể tìm thấy python, mặc dù nó tìm thấy thư mục cài đặt. Chạy python setup.py py2exe ở giai đoạn này đã cho tôi các lỗi chính xác giống như bạn đang thấy.

Sau đó tôi đã tải xuống py2exe-0.6.9.win64-py2.7.amd64.exe từ this page và cài đặt nó. Quá trình cài đặt diễn ra mà không gặp trục trặc và python setup.py py2exe cho tôi rất nhiều giao diện điều khiển, tạo các thư mục xây dựng và thư mục dist và dự kiến ​​thực thi.

0

tôi đã phải đối mặt với cùng một vấn đề, tôi đã sử dụng Python 2.7 (32 bit) trên Windows 7 (64 bit) với py2exe-0.6.9.win64-py2.7.amd64.exe , do đó, vấn đề là tôi đã sử dụng 32 bit Python và py2exe 64 bit. Nếu bạn không biết liệu gói Python bạn đang sử dụng là 32 bit hay 64 bit, thì hãy chạy idle.bat từ C:\Python27\Lib\idlelib\.

Dòng đầu tiên trong cửa sổ dấu nhắc python sẽ hiển thị cho bạn chi tiết gói python.

Tôi đã gỡ cài đặt py2exe-0.6.9.win64-py2.7.exe bằng cách chạy "pip uninstall py2exe" và cài đặt py2exe-0.6.9.win64-py2.7.amd64.exe làm việc cho tôi.