cx_freeze ImportError: No module named 'idna' - cx-freeze

I'm using python 3.6
Trying to make and exe from my .py file. but when I run python setup.py build
it give me an error
raise ImportError("No module named %r" % name)
ImportError: No module named 'idna'
My setup file is like this
setup file

Save:
# thanks to https://www.youtube.com/watch?v=GSoOwSqTSrs
from cx_Freeze import setup, Executable
setup(
name='KutsalAklinNerde?',
version='0.1', #Further information about its version
description='Parse stuff', #It's description
executables= [Executable("Example.py")])
as setup.py in the same directory of your Example.py (the .py you want to convert to .exe)
And then run >python setup.py build in that directory with command prompt.

Related

pyproject.toml doesn't support customized develop/build?

I can customized the installing process in develop mode by setup.py like below:
from setuptools import setup
from setuptools.command import develop
class CustomDevelop(develop.develop, object):
"""
Class needed for "pip install -e ."
"""
def run(self):
super(CustomDevelop, self).run()
print("CustomDevelop=====================")
install_requires = ["numpy"]
setup(
name="example_package",
version="0.0.1",
packages=["example_package"],
cmdclass={'develop': CustomDevelop},
)
When running python3 -m pip install -vvv -e ., the output is
Running setup.py develop for example-package
Running command python setup.py develop
running develop
running egg_info
writing example_package.egg-info/PKG-INFO
writing dependency_links to example_package.egg-info/dependency_links.txt
writing top-level names to example_package.egg-info/top_level.txt
reading manifest file 'example_package.egg-info/SOURCES.txt'
writing manifest file 'example_package.egg-info/SOURCES.txt'
running build_ext
Creating /home/example_package/venv_example_package/lib/python3.8/site-packages/example-package.egg-link (link to .)
Adding example-package 0.0.1 to easy-install.pth file
Installed /home/lai/example_package
CustomDevelop=====================
However, it's not possible to do it with PEP518 which introduces pyproject.toml. Is there a workaround for this issue?

ImportError: No module named distutils.core

I am trying to make an executable with python, py2exe using Enthought. And I'm sure there is no problem with my setup.py.
But after running:python setup.py py2exe. There is an error look as below:
ImportError: No module named distutils.core
So, how can I solve the problem?

convert python3.5 codes to exe file using pyinstaller warnout missing module

I'm converting my python 3.5 program to an exe file using pyinstaller ,here's my environment:
system:windows 10
python:python 3.5,exactly i installed Anaconda3-4.2.0-Windows-x86_64.exe
pyinstaller:3.2
I have already copy myfile.py in pyinstall file
then i run in cmd:
cd C:\Program Files\Anaconda3\Scripts
pyinstaller.exe -F myfile.py
The code runs successfuly,and I got 2 folder
C:\Program Files\Anaconda3\Scripts\build
C:\Program Files\Anaconda3\Scripts\dist
In "C:\Program Files\Anaconda3\Scripts\dist" , I got a myfile.exe , bug when I run it , the error occured:
Traceback (most recent call last):
File "site-packages\PyInstaller\loader\rthooks\pyi_rth_pkgres.py", line 11, in <module>
File "c:\program files\anaconda3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 389, in load_module
exec(bytecode, module.__dict__)
File "site-packages\setuptools-27.2.0-py3.5.egg\pkg_resources\__init__.py", line 68, in <module>
File "site-packages\setuptools-27.2.0-py3.5.egg\pkg_resources\extern\__init__.py", line 61, in load_module
ImportError: The 'appdirs' package is required; normally this is bundled with this package so if you get this warning, consult the packager of your distribution.
Failed to execute script pyi_rth_pkgres
I checked the logs in C:\Program Files\Anaconda3\Scripts\build\myfile\warnout.txt , then got warns like this:
missing module named PyQt5.QtCore.QCoreApplication - imported by PyQt5.QtCore, c:\program files\anaconda3\lib\site-packages\PyInstaller\loader\rthooks\pyi_rth_qt5plugins.py
missing module named PyQt5.QtCore.QIODevice - imported by PyQt5.QtCore
missing module named PyQt5.QtCore.QBuffer - imported by PyQt5.QtCore
missing module named PyQt5.QtGui.QPixmap - imported by PyQt5.QtGui
missing module named PyQt5.QtGui.QImage - imported by PyQt5.QtGui
missing module named PyQt5.QtGui.qRgba - imported by PyQt5.QtGui
missing module named 'PyQt5.sip' - imported by c:\program files\anaconda3\lib\site-packages\PyInstaller\loader\rthooks\pyi_rth_qt5plugins.py
missing module named numpy.infty - imported by numpy, scipy.sparse.linalg.isolve.lsmr
missing module named numpy.finfo - imported by numpy, scipy.sparse.linalg.isolve.minres, scipy.optimize.slsqp, scipy.optimize.minpack, scipy.optimize.zeros
missing module named numpy.inner - imported by numpy, scipy.sparse.linalg.isolve.minres
missing module named pandas.core.base.NoNewAttributesMixin - imported by pandas.core.base, pandas.core.strings, pandas.tseries.common, pandas.core.categorical
missing module named pandas.core.base.PandasDelegate - imported by pandas.core.base, pandas.tseries.common, pandas.core.categorical
missing module named pandas.core.base.AccessorProperty - imported by pandas.core.base, pandas.core.strings
There's many warns like this , I also tried some similar codes like:
pyinstaller.exe -F "myfile.py"
pyinstaller.exe --onefile "myfile.py"
pyinstaller.exe -F -p C:\Program Files\Anaconda3\Lib\site-packages\pandas myfile.py #(-p options like this)
But I got the same result also(no error occured,but warns happened,and the exe file can't use)
How can I do ? Thanks!
I just have solved it , just do like this:
first install pyinstaller
pip install pyinstaller
because if install pyinstaller with pyinstaller.exe , you may short of some dependents package . then
pip unistall pyinstaller
yes , you just do it .
then , download the pyinstaller developed version from
https://github.com/pyinstaller/pyinstaller
then , unpack the zip file , run cmd in the file,
python setup.py install
That's ok ......

exe built with cx_Freeze, PyQt5, Python3 can't import ExtensionLoader_PyQt5_QtWidgets.py and run

I'm trying to pack my app Python3, PyQt5 for Windows using cx_Freeze.
I've installed Python 3.4.3, Python-win32, PyQT5, cxfreeze.
Application itself, run in console, works fine.
I try to pack it with cx_freeze:
python setup.py build_exe.
It works on the same host. But when I move it to another clean installation WinXP it gives an error:
Traceback:
File "C:\Python34\lib\site-packages\cx_Freeze\initscripts\Console.py", line 27 in <module>
File "pyftp1.py" in 7, in <module>
File "c:\python\32-bit\3.4\lib\importlib\_bootstrap.py", in 2237, in _find_and_load
File "c:\python\32-bit\3.4\lib\importlib\_bootstrap.py", in 2226, in _find_and_load_unlocked
File "c:\python\32-bit\3.4\lib\importlib\_bootstrap.py", in 1191, in _load_unlocked
File "c:\python\32-bit\3.4\lib\importlib\_bootstrap.py", in 1161, in _load_backward_compatible
File "ExtensionLoader_PyQt5_QtWidgets.py", line 22, in <module>
File "ExtensionLoader_PyQt5_QtWidgets.py", line 14, in __bootstrap__
ImportError: DLL load failed: Не найден указанный модуль.
English: "specified module was not found".
Here's my setup.py:
import sys
from cx_Freeze import setup, Executable
includes = ['sys', 'PyQt5', 'PyQt5.Core', 'PyQt5.QtGui', 'PyQt5.QtWidgets', 'os', 'os.path', 'ftplib',
'traceback', 'time',]
excludes = []
packages = ['os', 'PyQt5']
path = []
build_exe_options = {
'includes': includes,
'excludes': excludes,
'packages': packages,
'path' : path,
#'dll_includes': ['msvcr100.dll'],
'include_msvcr' : True,
'include_files': [
(r'C:\Windows\System32\msvcr100.dll', 'msvcr100.dll'),
],
}
base = None
if sys.platform == 'win32':
base = 'Win32GUI'
setup(
name = "pyftp1",
version = "0.1",
description = "Foto uploader",
options = {'build_exe_options': build_exe_options},
executables = [Executable("pyftp1.py", base=base, appendScriptToLibrary=False, copyDependentFiles=True)]
)
Also I found it doesn't copy msvcr100.dll file, however I've stated it twice! I've copied it manually to target host.
Here's pyftp1.py:
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import sys, time, os, hashlib
import ftplib
import traceback
from PyQt5.QtWidgets import QApplication, QWidget, QFileDialog # <-- Line 7
from PyQt5.QtWidgets import QPushButton, QHBoxLayout, QVBoxLayout, QScrollArea, QLineEdit, QCheckBox
from PyQt5 import QtGui
from PyQt5.QtGui import QIcon, QPalette, QLinearGradient, QColor, QBrush
from PyQt5.QtCore import QObject, QThread, pyqtSignal, pyqtSlot
Solution.
After struggling during a lot of time with a problem I've found the solution. Many how-to do not take an account specific versions of software, or some specific modules used, or even they do not check .exe on fresh system, which has no your libraries dlls and so on. Here's working and tested solution.
First, I removed cx_freeze and used py2exe.
I've built all the stuff on WinXP 32-bit - for the goal it could be run on nearly every system.
You need:
Win XP 32-bit (or another system which you consider as minimal requirements)
Python 3.4 -- install from www.python.ord/download Windows x86 msi installer
PyWin32 -- install from sf.net pywin32-219.win32.py3.4.exe
Qt5.5 -- install it from qt.io, also you get mingw, next add folder C:\Qt\Tools\mingw492_32\bin to your system env %PATH%.
Git for Windows -- install from git-scm.com
PyQt5 -- download from riverbankcomputing.co.uk win32 x86 installer and run it
SIP -- the worst intallation!
Download it from riverbankcomputing.co.uk,
unzip,
run Git Bash,
python configure.py -p win32-g++ ,
mingw32-make.exe install.
It fails (. You go manually to sipgen/ folder and copy sip.exe to c:\Python34. Next go to ../siplib and copy sip.pyd to c:\python34\Lib\site-packages, then
strip /c/Python34/Lib/site-packages/sip.pyd
cp sip.h /c/Python34/include/
py2exe -- python -m pip install py2exe
7-Zip -- install from 7-zip.org as x86 exe
7-zip extra, unpack into installed 7-zip folder, conflicts with .txt files could be ignored
Resource Hacker -- from angusj.com -- however it's not necessary if you don't want to set to patch your .exe finally and give it a nice icon
Next I added setup.py to the project:
from distutils.core import setup
import os, sys
import py2exe
from glob import glob
import PyQt5
NAME="ProgName"
qt_platform_plugins = [("platforms", glob(PyQt5.__path__[0] + r'\plugins\platforms\*.*'))]
data_files.extend(qt_platform_plugins)
msvc_dlls = [('.', glob(r'C:\Windows\System32\msvc?100.dll'))]
data_files.extend(msvc_dlls)
# print(data_files)
sys.argv.append('py2exe')
setup(
data_files=data_files,
# windows=["pyftp1.py",],
windows=[
{
"script": "pyftp1.py",
"icon_resources": [(0, "resources/favicon.ico")]
}
],
# zipfile=None,
options={
"py2exe": {
"includes":["sip", "atexit",],
# "packages": ['PyQt5'],
"compressed": True,
"dist_dir": "dist/" + NAME,
# "bundle_files": 0,
# "zipfile": None,
"optimize": 2,
}
}
)
Just not to run all the actions manually, you may add Makefile
# start settings
DIST=dist
# change NAME also in setup.py and resource/config.txt
NAME=ProgName
EXT=exe
# final name and location of the built program
FINAL=$(DIST)/$(NAME).$(EXT)
# external programs
7ZIPDIR="C:\Program Files\7-Zip"
RESHACKER="/c/Program\ Files/Resource\ Hacker/ResourceHacker.exe"
# intermediate steps
# no icon version of program
NOICON=$(DIST)/$(NAME)_no_icon.$(EXT)
# name of .7z archive
7Z_BASENAME=$(NAME).7z
7Z=$(DIST)/$(7Z_BASENAME)
# folder with ready .exe
PROGDIR=$(DIST)/$(NAME)
all: $(FINAL)
$(FINAL): $(NOICON)
# change icon
"$(RESHACKER)" -addoverwrite $(NOICON), $(FINAL), resources/favicon.ico, ICONGROUP, MAINICON, 0
$(NOICON): $(7Z)
#build autorunning sfx with default icon
cat $(7ZIPDIR)/7zS.sfx resources/config.txt $(7Z) > $(NOICON)
$(7Z): exe
# compress program folder to .7z
cd $(DIST); $(7ZIPDIR)\\\7z.exe a $(7Z_BASENAME) $(NAME)
exe: $(DIST)
# build program itself
python setup.py py2exe
$(DIST):
# create dist directory
# echo $(DIST)/
clean:
rm -rf $(DIST)/*
Now you can easily build your program itself - as a folder of files:
mingw32-make.exe exe
Or make a single file with correct icon:
mingw32-make.exe all
Or clean that all stuff:
mingw32-make.exe clean
you could try this:
add 'libEGL.dll' to your working folder. This is from Python3x\Lib\site-packages\PyQt5
In cx-freeze setup.py add:
if sys.platform == "win32":
includefiles = ['libEGL.dll'] #here you should add other files if you need to
In cx-freeze setup.py link "includefiles" to build_exe_options like this:
build_exe_options= {
...
...
'include_files': includefiles,
}

making a python program executable

from distutils.core import setup
import py2exe, sys, os
sys.argv.append('py2exe')
setup(
options = {'py2exe': {'bundle_files': 1}},
windows = [{'script': "single.py"}],
zipfile = None,
)
in this setup file for py2exe where it says single.py is that where I place the name of my program?
I don't know your py2exe tool, but we usually use this way to convert py to exe:
Download and install Standard Python Software:
http://www.python.org/download/
Download PyInstaller via link below:
http://pyinstaller.python-hosting.com/
Unpack the archive, that you have downloaded!
In this examople, the directory of the unpacked files:
In the <UNPACKED_FILES_DIR> directory, run Configure.py.
It must be run before trying to build anything.
Create a spec file for your project:
python Makespec.py -F -p <PYTHON_LIB_PATH> <PYTHON_SCRIPT>
-F: Produce a single file deployment.
-p <PYTHON_LIB_PATH>: Set base path for import (like using PYTHONPATH).
( e.g.: C:\Program Files\Python24\Lib\ )
<PYTHON_SCRIPT>: Path to python script.
6 Build your project!
python Build.py <SPECFILE>
<SPECFILE>: Path to the specfile, that have been created in step 4!
The full path to <SPECFILE>:
<UNPACKED_FILES_DIR>/<PYTHON_SCRIPT>/<PYTHON_SCRIPT>.spec
The binary file will be placed in the directory of <SPECFILE>.
If you can restrict your code, then Shed Skin, PyPy, or Cython make true, fast executables.
Py2exe, PyInstaller, or bbfreeze can package Python up to 2.7 into single executables.
Cx_Freeze packages Python up to 3.x into an executable plus many other files.
Yes. Are you making a windowing application or a console application? See the example setup.py files that came with py2exe.

Resources