Error: "MSVCP90.dll: No such file or directory" even though Microsoft Visual C++ 2008 Redistributable Package is installed
Solution 1
I would recommend ignoring the dependency outright. Add MSVCP90.dll
to the list of dll_excludes
given as an option to py2exe
. Users will have to install the Microsoft Visual C++ 2008 redistributable. An example:
setup(
options = {
"py2exe":{
...
"dll_excludes": ["MSVCP90.dll", "HID.DLL", "w9xpopen.exe"],
...
}
},
console = [{'script': 'program.py'}]
)
Solution 2
(new answer, since the other answer describes an alternate solution)
You can take the files from the WinSxS directory and copy them to the C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT
directory (normally created by Visual Studio, which you don't have). Copy them to get the following structure:
+-Microsoft.VC90.CRT
| |
| +-Microsoft.VC90.CRT.manifest
| +-msvcm90.dll
| +-msvcp90.dll
| +-msvcr90.dll
Then, you should be able to run the setup program (still excluding msvcp90.dll
, as in the other answer), and it should successfully find the files under Microsoft.VC90.CRT
and copy them as data files to your bundle.
See the py2exe tutorial for more information.
claws
Updated on June 06, 2022Comments
-
claws almost 2 years
I'm trying to build a package from source by executing
python setup.py py2exe
This is the section of code from setup.py, I suppose would be relevant:
if sys.platform == "win32": # For py2exe. import matplotlib sys.path.append("C:\\Program Files\\Microsoft Visual Studio 9.0\\VC\\redist\\x86\\Microsoft.VC90.CRT") base_path = "" data_files = [("Microsoft.VC90.CRT", glob.glob(r"C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT\*.*")),
Error it shows:
*** finding dlls needed *** error: MSVCP90.dll: No such file or directory
But I've installed "Microsoft Visual C++ 2008 Redistributable Package". I'm running 32-bit python on 64-bit Windows 8. I'm trying to build a 32-bit binaries.
Also there is no folder like this: "C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\". This is what my computer contains:
EDIT:
On searching for
msvcp90.dll
on my C:\ drive I found that they are installed in weird paths like this: -
claws over 11 yearsVS2008 redistributable? Is that some new package that I need to install?
-
nneonneo over 11 yearsSorry, I meant the Visual C++ 2008 redist package. I'll edit to fix.
-
claws over 11 yearsIf this is what it is microsoft.com/en-us/download/details.aspx?id=29. Then I've installed it and repaired it again and again. Still the problem persists
-
nneonneo over 11 yearsYou (as the packager) can solve the problem using
dll_excludes
. Your users (as the receivers of the package) will need to install the redist before using the program. Usingdll_excludes
should stop py2exe from looking for the DLL. -
claws over 11 yearsI want to ship these dlls along with the software.
-
Daniel Kinsman over 11 years@claws rather than shipping the dlls, you could ship the redistributable installer and promt the user to install it.