I am trying to build an .exe
file from .py
file using pysinstaller
and Python 3.7.2.
It worked with Python 3.6; then I re-inst
The bug was resolved in version 3.6 of PyInstaller. Just update and will work fine.
I found the following solution: replace bindepend.py
from <myProject_path>\venv\Lib\site-packages\PyInstaller\depend
with the file provided by Loran425 on github here
It may be from an ill-formed spec file, something as simple (yet difficult to find) as a commented or missing argument.
When I comment out name
in exe
,
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
# name='my_app',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True,
icon='resources/icons/icon.ico',
version='resources/version/version.py')
I get the following traceback:
146666 INFO: Building PYZ (ZlibArchive) c:\projects\my-env\app\qc\tools\my_app\build\my_app_old\PYZ-00.pyz completed successfully.
Traceback (most recent call last):
File "C:\Users\lorem\Anaconda3\envs\my-env\Scripts\pyinstaller-script.py", line 10, in <module>
sys.exit(run())
File "C:\Users\lorem\Anaconda3\envs\my-env\lib\site-packages\PyInstaller\__main__.py", line 114, in run
run_build(pyi_config, spec_file, **vars(args))
File "C:\Users\lorem\Anaconda3\envs\my-env\lib\site-packages\PyInstaller\__main__.py", line 65, in run_build
PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
File "C:\Users\lorem\Anaconda3\envs\my-env\lib\site-packages\PyInstaller\building\build_main.py", line 720, in main
build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build'))
File "C:\Users\lorem\Anaconda3\envs\my-env\lib\site-packages\PyInstaller\building\build_main.py", line 667, in build
exec(code, spec_namespace)
File "my_app_old.spec", line 49, in <module>
version='resources/version/version.py')
File "C:\Users\lorem\Anaconda3\envs\my-env\lib\site-packages\PyInstaller\building\api.py", line 382, in __init__
self.name = os.path.join(CONF['distpath'], os.path.basename(self.name))
File "C:\Users\lorem\Anaconda3\envs\my-env\lib\ntpath.py", line 214, in basename
return split(p)[1]
File "C:\Users\lorem\Anaconda3\envs\my-env\lib\ntpath.py", line 183, in split
p = os.fspath(p)
TypeError: expected str, bytes or os.PathLike object, not NoneType
The application builds when name
is included.
As I have read from many forums here and here and discussions regarding this issue caused by Pyinstaller.
If you are using Pycharm or any virtual environment. Unfortunatelly Pycharm creates its local vertual environment in venv
path once you indicate the interpreter
. So, you should set the external tool (pyinstaller) to the real path of your python 3.7 .exe as the picture shows here.
For Linux users, follow my other answer here.
In my case the problem occurs when I'm using the standard library's venv
, but not when I'm using virtualenv
. (However I had to use virtualenv==16.1.0
because of another bug.)