How to point pyinstaller to the correct versions of MSVC? 90.dll?

I have a python application that I am trying to create as a pyinstaller distributable. A similar script works successfully on Linux.

I create it on Windows 7 x64, but I want to build a 32-bit binary for better compatibility, so I use 32-bit python-2.7. Among my dependencies are matplotlib and pyside , which require MSVC. I am installing the package from VCForPython27 from Microsoft.

I encountered an error while running my pyinstaller script. I get the following message:

 1250 INFO: Adding Microsoft.VC90.CRT to dependent assemblies of final executable 7428 INFO: Searching for assembly x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_none ... 7428 WARNING: Assembly not found 7428 ERROR: Assembly x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_none not found 7475 WARNING: lib not found: MSVCR90.dll dependency of C:\Python27\python.exe 7553 INFO: Searching for assembly x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_none ... 7553 WARNING: Assembly not found 7553 ERROR: Assembly x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_none not found 7662 WARNING: lib not found: MSVCR90.dll dependency of C:\Windows\system32\python27.dll 7662 INFO: Analyzing C:\Python27\lib\site-packages\PyInstaller\loader\_pyi_boots 

There are several messages about the MSVCP90.dll and MSVCR90.dll files

I see that I have a folder C:\Windows\winsxs\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4148_none_5090ab56bcba71c2 which contains versions of both files.

This mismatch occurs both when installing python packages from the Christoph Gohlke page , and using pip (except for matplotlib, which I cannot install using pip, because there are no dependencies).

Oddly enough, pyinstaller creates a binary file. However, when I try to start it, I get a pop-up message:

 WARNING: file already exists but should not: C:\Users\Martin\AppData\Local\Temp\_MEI34922\Include\pyconfig.h 

Does anyone know how I can do one of the following:

  • Install precious build x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_none ? Where can I get this particular version?
  • Tell python to look for another version ( x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4148_none_5090ab56bcba71c2 )?
  • Solve the problem with the unwanted presence of pyconfig.h ? It seems to lead nothing, but I thought I should try too.
  • Find another way to create my binary code? This is complex code that works with external binaries, but if I have to try py2exe, I’m not sure if it will be better, but.
+5
source share
1 answer

A 9.0.21022.8 package containing version 9.0.21022.8 of msvcr90.dll and msvcp90.dll can be downloaded from the Microsoft website here . This will help PyInstaller find the versions it needs and include them in the resulting executable.

Interestingly, I can run an executable compiled using PyInstaller with the redistributable version 9.0.30729.6161 , it just won’t pack these DLLs. I tried to copy msvc*90.dll to the dist directory, even tried to create and modify manifest files, but in the end I still get the python27.dll error python27.dll . Installing any version of redistributable VC ++ may fix the problem, but then my package will not be self-contained. I would like to understand what is happening here better ...

+7
source

Source: https://habr.com/ru/post/1204987/


All Articles