Python executables: py2exe or PyInstaller? - windows

To create executable files (windows) I assume that we should use one of them:
Py2exe or PyInstaller.
What are the difference between them?

Py2exe and PyInstaller both are wrappers but here are few differences that I noticed,
Py2exe is compatible with python2.4+ including python3.0 & 3.1 whereas PyInstaller is currently, compatible with python 2.7 and 3.3–3.5
As far I know, Py2exe didn't support signing whereas Pyinstaller has support for signing from version 1.4
In PyInstaller it is easy to create one exe, By default both create a bunch of exes & dlls.
In py2exe its easier to embed manifest file in exe, useful for run as administrator mode in windows vista and beyond.
Pyinstaller is modular and has a feature of hooks to include files in the build that you like. I don't know about this feature in py2exe.
Hope this helps you in your decision making.
[Update] - It looks like PyInstaller is actively developed (https://github.com/pyinstaller/pyinstaller/) and released. py2exe is still using sourceforge and its release cycle is very random on pypi there is no build after 2014 and their code show development in 2017 as well (https://sourceforge.net/p/py2exe/svn/HEAD/tree/trunk/py2exe-3/py2exe/). So, I recommend using pyinstaller till the time py2exe stabilizes its release cycle in favor of developers.

There is a fork of py2exe that is being actively developed to support ongoing versions of Python, https://github.com/albertosottile/py2exe, currently at v0.9.3.2 which works with Python 3.7.
I've used it on a small project and it works as expected, producing a working executable. Download the correct version from the releases page and install with pip.
Update 2020-11-06:
As per LolPython's comment, this fork now redirects to the official repo so use that instead:
https://github.com/py2exe/py2exe

From the message of the wikipedia,py2exe is not active for long time :
Stable release: 0.9.2.2 for Python 3 /; 21 October 2014; 0.6.9 for Python 2 /; 15 November 2008
So I advise to use the pyinstaller.....
But now the pyinstaller also meet the problemThe offical website of pyinstaller:
Help keeping PyInstaller alive: Maintaining PyInstaller is a huge amount of work. PyInstaller development can only continue if users and companies provide sustainable funding. See Funding PyInstaller for how to support PyInstaller.

Related

How do I download PyPy?

I run Windows 10 64 bit.
I haven't tried downloading PyPy because I didn't find any tutorials on YouTube.
I have also went to the official PyPy website but it is for Python 3.6
Do I need to have python 3.6 downloaded too?
Also tell the steps to download PyPy
Edit: I am having problems in installing modules too. It gives a GINORMOUS error saying I need wheel, and some compilers like G77, GNU, Visual C++, etc.
If I understand you correctly, I dont think you need python 3.6 installed,
If you have already downloaded pypy from the website, extract the file by right-clicking on it and run the .exe file. Then run pypy and you shouldn't have any problems from there on.
Hope my advice is useful.

App failed to start because it could not find Qt platform plugin "Windows" in ""

I have been bogging my mind on this one for a few days with various versions of python and freeze utilities.
Python 3.6, PyQt5
I created a script, and am trying to make a standalone .exe
However, when running pyinstaller, I get the result I have posted below. I am currently using an Anaconda distribution, so I am not sure if this has anything to do with it. How do I resolve this issue?
I have tried to fix it for several days using different python and pyqt versions, but the short story is that some of the libraries I am using come into conflict in other versions. I am posting this again because nothing else has really worked, and I am on my last straws.
Thanks in advance.
Error Window:
From this page:
PyQt5 - Failed to load platform plugin "windows". Available platforms are: windows, minimal
this answer solved my problem.
Copying the folder platforms from python installation directory into my built folder solved the problem. the "platforms" folder contains qminimal.dll.
Maybe it helps you too!
Can you try to install Anaconda in a folder that does not use non-ascii characters?
Also, you say you have done conda update --all, but your Qt version states 5.6.0. Last week we released version 5.6.2, so conda update --all should have got that version for you.
Perhaps try conda update qt and see that it installs 5.6.2?

AttributeError compiling Hello World in Cython 3.4 32-bit on Windows

I'm trying to get the Cython Hello World tutorial to work and getting an Attribute Error on the compilation.
My Hello world program, in Python 3.4:
print("Hello World from Cython")
And the setupfile, setupCythonHelloWorld.py:
from distutils.core import setup
from Cython.Build import cythonize
setup(
ext_modules = cythonize('helloWorld.pyx')
)
At the command line:
py -m setupCythonHelloWorld.py build_ext --inplace running build_ext
Command line returns and error:
Error while finding spec for 'setupCythonHelloWorld.py' (<class 'AttributeError'>: 'module' object has no attribute '__path__')
Here's some details on my computer and install:
Windows 7, 64-bit. (I'm on a Macbook pro using bootcamp, but that shouldn't matter)
Python 3.4, 32-bit version
Regular pip install of modules, mostly from wheels. No Anaconda or Python (x,y).
I've uninstalled and reinstalled all of my windows compilers several times now, which is no fun. I know I need MS C++ 2010 because I have Python 3.4 and I need the compilers to match. There is a lot of information out there on MinGW, but also guidance not to use that compiler as it doesn't match what Python is built with for Windows.
Most most recent reinstall is listed under "Microsoft Visual C++ 10.0 standalone: Windows SDK 7.1 (x86, x64, ia64)". I've also tried a few other ways, including the python 3.4 section of "Compiling Python extensions on Windows."
Any help would be greatly appreciated. I've done a lot of installing and uninstalling of various Windows VS and SDK versions and I'm not much closer than I was 7 hours ago. Thanks.
This is related to a number of other topics:
SO "ValueError:['path'] post, but it's likely 64-bit (sorry for no link, I don't have enough points to post more than 2 links)
Lots of other cython install posts, but all seem to be related to other systems, including 64-bit, linux, non-Python 3.4 versions, ...
Ok, I punted. I upgraded to Python 3.5 which makes things work much, much easier.
It was just as easy as explained in the Python 3.5 section of Compiling Python extensions on Windows:
Install Visual C++ 2015 Build Tools
Cython Hello World compiles and runs. Easy.
I spent over 9 hours today struggling with MS 2010 compilers for Cython on Python 3.4... and never got it to work. I got C++ 2015 Build Tools and Cython using Python 3.5 to run Hello World in under an hour.
If anyone knows how to make it work I'm interested to know. However, unless something goes horribly wrong with my dependencies I don't think I'm going to look back at Python 3.4 ever again.

Python 3.x in Cygwin?

I have the python package in Cygwin on Windows 7. However, typing
python -V
returns
Python 2.6.8
This is a pretty low version of Python... I could use Python 3.x (whatever version is newest, preferably). I've seen some people say you have to download a .zip or .tar manually to get it (similar to this question). My questions are as follows (please note this is NOT a duplicate of the linked question):
Can I get Python 3.x somehow using the Cygwin package manager?
Can/should I get rid of Python 2.6 if I manage to get Python 3.x running? None of my code runs on anything specific to Python 2.6.
Thanks
As others have noted, the version of Python 2.6 that's installed with Cygwin is recent; Python release numbers are not linear with respect to time. The Python releases page details which versions were released on which date.
You can install Python3 if you want, using Cygwin Ports. This is a collection of Cygwin packages that are not ready for general release on the main Cygwin mirrors, but have been compiled ready to be used on Cygwin. I've written some instructions over on SuperUser which describe in more detail how to do this.
(I'd avoid installing from source, as Lennart suggests, as I'd expect this will require non-trivial fixes to make it work on Cygwin.)
As noted in the above-linked SuperUser question, there's no need to uninstall Python 2.6 to install Python 3; the two run happily side-by-side.
That said, beware your claim that "None of my code runs on anything specific to Python 2.6": Python 3.x is not back compatible with Python 2.x, and code written for Python 2.x will generally not work on Python 3.x without work to adapt it. The Python 3.0.1 What's New Guide has a good overview of the changes in Python 3.x.
Update: As of Wed 25 July 2012, Python 3.2.3 is included in the standard Cygwin installer. Just run Cygwin's setup.exe again (download it from cygwin.com again if you need to), and you should be able to select and install it like any other package.

Installing OpenCV on Windows 7 for Python 3.2.3 [duplicate]

am trying desperately to get OpenCV to work on Windows 7. I download and installed it, and it didn't work, I got
ImportError: No module named opencv
when I tried to run one of the samples. I google my problem and got only random solutions that don't work. Can anybody guide me in installing it, or know where i can get a clear installation guide design for a programming noob.
As of OpenCV 2.2.0, the package name for the Python bindings is "cv".The old bindings named "opencv" are not maintained any longer. You might have to adjust your code. See http://opencv.willowgarage.com/wiki/PythonInterface.
The official OpenCV installer does not install the Python bindings into your Python directory. There should be a Python2.7 directory inside your OpenCV 2.2.0 installation directory. Copy the whole Lib folder from OpenCV\Python2.7\ to C:\Python27\ and make sure your OpenCV\bin directory is in the Windows DLL search path.
Alternatively use the opencv-python installers at http://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv.
I have posted a very simple method to install OpenCV 2.4 for Python in Windows here : Install OpenCV in Windows for Python
It is just as simple as copy and paste. Hope it will be useful for future viewers.
Download Python, Numpy, OpenCV from their official sites.
Extract OpenCV (will be extracted to a folder opencv)
Copy ..\opencv\build\python\x86\2.7\cv2.pyd
Paste it in C:\Python27\Lib\site-packages
Open Python IDLE or terminal, and type
>>> import cv2
If no errors shown, it is OK.
UPDATE (Thanks to dana for this info):
If you are using the VideoCapture feature, you must copy opencv_ffmpeg.dll into your path as well. See: https://stackoverflow.com/a/11703998/1134940
I have posted an entry to setup OpenCV for Python in Windows:
http://luugiathuy.com/2011/02/setup-opencv-for-python/
Hope it helps.
Actually you can use x64 and Python 2.7. This is just not delivered in the standard OpenCV installer. If you build the libraries from the source (http://docs.opencv.org/trunk/doc/tutorials/introduction/windows_install/windows_install.html) or you use the opencv-python from cgohlke's comment, it works just fine.
download the opencv 2.2 version from https://sourceforge.net/projects/opencvlibrary/files/opencv-win/
install package.
then Copy cv2.pyd to C:/Python27/lib/site-packeges.
and it should work:
import cv2
open command prompt and run the following commands (assuming python 2.7):
cd c:\Python27\scripts\
pip install opencv-python
the above works for me for python 2.7 on windows 10 64 bit
One thing that needs to be mentioned. You have to use the x86 version of Python 2.7. OpenCV doesn't support Python x64. I banged my head on this for a bit until I figured that out.
That said, follow the steps in Abid Rahman K's answer. And as Antimony said, you'll need to do a 'from cv2 import cv'
Installing OpenCV on Windows 7 for Python 2.7

Resources