Tôi đang cố gắng sử dụng py2exe để phân phối ứng dụng python mà tôi đã viết. Tất cả mọi thứ dường như đi OK, nhưng khi tôi chạy nó trên máy khác nó không thành công với các lỗi sau:Py2exe - win32api.pyc ImportError Tải DLL không thành công
Traceback (most recent call last):
File "application.py", line 12, in <module>
File "win32api.pyc", line 12, in <module>
File "win32api.pyc", line 10, in __load
ImportError: DLL load failed: The specified procedure could not be found.
Tôi có googled cho điều này và không tìm thấy rất nhiều, nhưng đã cố gắng những gợi ý sau đây để avail không có:
pywintypes nhập khẩu và pythoncom trước win32api (trong setup.py cho py2exe và trong việc áp dụng chính) thêm một số mã để các setup.py -
# ModuleFinder can't handle runtime changes to __path__, but win32com uses them
import pywintypes
import pythoncom
import win32api
try:
# if this doesn't work, try import modulefinder
import py2exe.mf as modulefinder
import win32com
for p in win32com.__path__[1:]:
modulefinder.AddPackagePath("win32com", p)
for extra in ["win32com.shell"]: #,"win32com.mapi"
__import__(extra)
m = sys.modules[extra]
for p in m.__path__[1:]:
modulefinder.AddPackagePath(extra, p)
except ImportError:
# no build path setup, no worries.
pass
tôi khá mới để tất cả điều này, vì vậy bất kỳ trợ giúp nào sẽ được đánh giá cao
Cảm ơn
Jon
Cảm ơn bạn rất nhiều! Điều đó đã làm các trick, tất cả làm việc hoàn hảo bây giờ –
Chúng tôi đã nhìn thấy điều tương tự, và powrprof.dll xuất hiện trong danh sách phụ thuộc bằng cách sử dụng công cụ Dependency Walker. Sau khi thêm nó vào 'dll_excludes', nó hoạt động tốt. – Ivo
Lưu ý rằng, theo mặc định, py2exe không xóa nội dung của thư mục phân phối, vì vậy nếu trước đó bạn đã cài đặt phần mềm, các tệp 'mswsock.dll' và 'powrprof.dll' sẽ vẫn ở đó, ngay cả sau cài đặt mới (khi bạn đã thêm dòng 'dll_excludes' ở trên). Chỉ cần chắc chắn xóa thư mục phân phối trước khi chạy lại py2exe. – ishmael