Pyinstaller missing dll files - python-3.x

I want to create a 32bit executable app from my script to run on Windows 10 with X86 or X64 architectures. I've generated the X64 version of my script and it worked fine. My host machine is X64 but I installed Python X86 version to generate X86 app. Then I generated the executable with Pyinstaller but when I run the executable it throws the following error:
C:\Users\Name\Appdata\local\Temp_MEI51162\VCRUNTIME140.dll is
either not designed to run on Windows or it contains an error...
and in the console I see this error:
Error loading Python DLL
'C:\Users\Name\AppData\Local\Temp_MEI51162\python36.dll'.
LoadLibrary:
I've checked the _MEI51162, both VCRUNTIME140.dll and python36.dll is there but the python36.dll has a size of about 1 MB instead of 3 MB. It doesn't matter if I generate the app as a standalone executable or not and still give me the same error.

It seems that the problem happens when you install both 32bit and 64bit of PyInstaller. And PyInstaller would fail on selecting which version of dependencies are required for the current build. The problem in my situation was VCRUNTIME140.dll. I couldn't find a way to replace the vcruntime140.dll, but I found a workaround by adding the correct file manually to C:\Users\<User>\AppData\Roaming\pyinstaller directory and rebuild with Pyinstaller then It will be replaced with the new one just copied. This will fix the issue temporary and the directory should not be deleted.

Related

How to solve "plugin failed code 127" compiling with nanopb

I am trying to compile a c++ code in an conan enviroment, here are details:
Ubuntu 18.04 WSL x86-64
Windowns 10 x64
python 3.7.5
protoc 3.19.4
The project is located at /mnt/c/project
The build directory is located at /mnt/c/build
The build occurs without any errors but when I try to compile with "ninja" it throws an error related to protoc-gen-nanopb, as you can see attached image.
I tried to install a new protobuf from its c++ source, i added the LD_LIBRARY_PATH that was missing, and I have also tried to clean everything and erase all the files and build again. Everything seems to fail. I believe it's related to compatibility between protobuf and my python version, but I am not sure.
Could someone help me understand how to solve it? I am new to ubuntu and stackoverflow and i am sorry if some information is missing. In this case, just ask.
Error 127

"Failed to execute script pyi_rth_qt4plugins" error while running exe

I have made my application using PyQt4 and it's executable using pyinstaller. The executable runs fine on my system. My system also has PyQt5 installed.
The problem is that when I try to run the same executable on the target system(client's system), it gives me an error Failed to execute script pyi_rth_qt4plugins. The client system doesn't have Python or any version of PyQt.
I wanna know why is this happening. I'm not even able to locate where is the pyi_rth_qt4plugins located in the executable. Do I need to install Python and PyQt in my client's system as well?
As per the answer from the long thread here https://github.com/pyinstaller/pyinstaller/issues/2461
In site-packages (where PyInstaller is located) edit the following file:
PyInstaller/loader/rthooks.dat
Remove this line:
'PyQt4': ['pyi_rth_qt4plugins.py'],
This error also occurs in Python3.5 if you are using 3.5 you can downgrade to 3.4 to avoid the error
check here https://github.com/pyinstaller/pyinstaller/issues/2207
or if you don't want to downgrade python you can upgrade to PyQt5

Pyinstaller .exe unpacks to ...\local\Temp but then cannot find python37.dll

I'm using pyinstaller v4.0 to create a --onefile for execution on Win 7 and Win 10 machines. Win 7 machines can be either 32 or 64 bit. The ONLY version of python installed on the machine I'm using to build the .exe (run pyinstaller on) is Python v3.7.9 32 bit.
To create the .exe I'm simply using:
pyinstaller --onefile scriptname.py
I copy the resulting .exe from the pyinstaller dist folder to both Win 7 and Win 10 machines and, in most cases, it runs just fine; but on 3 separate machines when I try to run the .exe it throws this error:
"Error loading Python DLL 'C:\Users\username\AppData\Local\Temp_MEI3dddd\python37.dll'.
LoadLibrary: The specified module could not be found."
Note that 'dddd' referenced above can be differing 4 digits on different machines.
I have confirmed that the directory from the path, "_MEI3dddd", DOES get unpacked to the Temp directory, I've even been able to open the the "_MEI3dddd" directory long enough to see that python37.dll is in there.
I have confirmed permissions on the folders in the path are correct to allow the executing user full access.
Can anyone suggest what I am missing?
I found my fix. To resolve the issue, I spun up a VM with a Win 7 SP1 32 bit OS, installed Python 3.7.9 32 bit and pyinstaller.
From there it was just a matter of building the --onefile on that VM and copying the resulting .exe from the pyinstaller dist folder to the other target machines.

CMake C:/IntelSWTools/ISSM_2016/tools/compiler/gcc-ia/5.2.1/bin/i586-intel-elfiamcu-gcc is not a full path to an existing compiler tool

I am having issues compiling this project on zephyr.js, the instructions on their GitHub are for Linux however they do have an environment setup for Windows as well which I have completed to the letter.
When I run the compilation using the makefile I get:
CMake C:/IntelSWTools/ISSM_2016/tools/compiler/gcc-ia/5.2.1/bin/i586-intel-elfiamcu-gcc is not a full path to an existing compiler tool.
I am using the msys terminal with MinGW and I have installed CMake separately and configured it... but why is it throwing this error? I have checked, and the file is actually there. If I type C:/IntelSWTools/ISSM_2016/tools/compiler/gcc-ia/5.2.1/bin/i586-intel-elfiamcu-gcc. into the terminal, it also executes the compiler successfully.
Any ideas?
(Before anyone tells me to try on Linux, for now, it is a requirement to use Windows for this project)

Unable to Run mksdcard sdk tool on ARMv7 Processor Ubuntu 14.04

When trying to install Android Studio on my Linux Laptop, I get "Unable to Run mksdcard tool" From what I can tell from searching, this is usually caused by lacking the 32 bit compatibility libraries on 64 bit Linux, however I am running it on an ARMv7 processor, using the crouton project to use Linux on my Chromebook. I have tried install the recomended packages ending in i386, but the command line returned:
Reading Package Lists... Done
Building Dependendency Tree
Reading State information... Done
E: unable to locate package [Name of package here]
E: Couldn't find any package by Regex '[Name of package]'
Does anyone know what is causing this and how I can fix it?
I've discovered a workaround.
After a little searching, I've found that we can create executable binary of the tool for the ARMv7 platform ourselves! Whupee!
Head over to GitHub and pick up the source code, mksdcard.c. Download this to wherever you'd like, but make sure you download it as mksdcard.c and not as mksdcard.c.txt, which your browser might try to do. You can always rename the file later in case you accidentally save the filename incorrectly.
Over in your chroot environment, head to the directory where you downloaded the file.
Make sure you have the gcc compilation tools installed. Try running gcc -v in an attempt to see what version of GCC you have installed. If this doesn't work, you'll need to install GCC via sudo apt-get install gcc.
Run gcc -o mkdscard mksdcard.c. This uses GCC to compile the source code into something that can be executed. After compilation has completed, you can use ./mkscard to have Linux execute the binary file, which verifies that it works.
Navigate to your Android SDK Tools directory. This is usually ~/Downloads/Android/Sdk/tools. By running ls, you'll list the files and find the version of mksdcard that your Linux distribution doesn't understand how to run. (Running ./mksdcard on this file will confirm this.)
Backup the broken binary somewhere, then delete the copy in the tools folder. (I created a backups/ directory within the Android SDK Tools folder to move it to.)
Within the directory, use rm -r mksdcard to delete the old mksdard binary.
Finally, copy your compatible binary over to take it's place, e.g. cp ~/Downloads/mksdcard . (Copies the mksdcard binary we've created to the current directory ., the Android SDK Tools folder.)
Head back over to your Android Studio installer. In the dialogue complaining about mksdcard failing, hit Retry and the installation should continue. After it's finished, be sure to apply any updates that are recommended by the environment. Enjoy!
For newer versions eg. 3.1 C4 of Android Studio running with Ubuntu on ARM32 you will also need to place mksdcard in ~/Downloads/Android/Sdk/emulator (referencing like path from Alext T.).

Resources