Tôi có chương trình Python 3.5 64 bit (yêu cầu bởi tensorflow cho Windows) sử dụng OpenCV. Tôi đang phân phối nó với pyinstaller.Pyinstaller phân phối opencv từ Windows 10 đến Windows <10, thiếu tập tin ucrt api-ms-win-crt
tôi đã xây dựng chương trình của tôi với Windows 10
/c/Python35/Scripts/pyinstaller -c DeepMeerkat.spec
Trên máy tính của tôi, .exe xây dựng và chạy một cách hoàn hảo. Trên bất kỳ máy không phải là Windows 10 khác
trên
import cv2
Returns
ImportError: DLL load failed: The specified module could not be found.
tôi có thể nhìn thấy một số tiền rất lớn của cuộc thảo luận về vấn đề này trên pyInstaller thread, nhưng tôi có thể không hoàn toàn nói như thế nào để đưa nó vào thực tế. Dependency Walker nói rằng tôi đang thiếu một số DLL
api-ms-win-crt-**.dll
Được rồi, từ chủ đề PyInstaller, tôi biết rằng các DLL tồn tại
C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs
Theo cơ sở nhiều thư mục con trên kiến trúc.
tôi đã cố gắng thêm vào tập tin .spec tôi
pathex=["C:/Program Files (x86)/Windows Kits/10/Redist/ucrt/DLLs/"],
Hoặc cho kiến trúc đặc biệt của tôi
pathex=["C:/Program Files (x86)/Windows Kits/10/Redist/ucrt/DLLs/arm"],
Đó là những gì tôi nghĩ đã được đề nghị here
"Install the Windows Software Development Kit (SDK) for Windows 10 and expand the .spec-file to include the required DLLs, see “Distributing Software that uses the Universal CRT“ in the above-mentioned link, number 6."
Đó không có hiệu lực. Tôi nhận được hàng trăm lỗi như
121472 WARNING: lib not found: api-ms-win-crt-runtime-l1-1-0.dll dependency of c:\python35\DLLs\_ssl.pyd
Nhưng tôi có thể thấy rằng DLL đây
C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs\arm
Vì vậy, sau đó tôi theo nghĩa đen sao chép posthoc toàn bộ thư mục
cp -r "C:/Program Files (x86)/Windows Kits/10/Redist/ucrt/DLLs/" dist/Lib/
Nhưng không rõ cách kết nối chúng với .exe
. Rõ ràng, để cho pyInstaller biết trước là thích hợp hơn.
Tôi cũng đã cố gắng
/c/Python35/Scripts/pyinstaller --path "C:/Program Files (x86)/Windows Kits/10/Redist/ucrt/DLLs/arm" -c DeepMeerkat.spec
Và nó vẫn không tìm thấy chúng
Tôi cũng đã thử thêm thư mục đó vào PATH. Bất kỳ ý tưởng?
Tôi không thể thực hiện tác phẩm này, ngay cả sau khi tìm thấy các dll. Các "giải pháp" là chỉ cần sử dụng trình cài đặt của tôi để cài đặt vcredist_x86.exe trên máy của người dùng, điều này giải quyết nó, mặc dù chúng xuất hiện giống hệt nhau. Có lẽ vấn đề PATH trên máy của người dùng. – bw4sz
Bạn đang sử dụng phiên bản PyInstaller nào? Phiên bản 3.3 được phát hành tháng trước đã sửa một số cho Python> = 3.5 trên Windows 10. – jthetzel
Tôi đã sử dụng nhánh dev trên github theo hướng dẫn của người bảo trì. – bw4sz