An error for generating an exe file using pyinstaller - typeerror: expected str, bytes or os.PathLike object, not NoneType
Solution 1
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
Solution 2
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.)
Solution 3
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.
Solution 4
The bug was resolved in version 3.6 of PyInstaller. Just update and will work fine.
Admin
Updated on November 07, 2020Comments
-
Admin over 3 years
I am trying to build an
.exe
file from.py
file usingpysinstaller
and Python 3.7.2.It worked with Python 3.6; then I re-installed the last version of Python (3.7.2) and tried to generate an exe file, but pyinstaller barfs.
Below is the error report I get.
(venv) C:\Users\user\Desktop\untitled1>pyinstaller test.py 53 INFO: PyInstaller: 3.4 53 INFO: Python: 3.7.2 54 INFO: Platform: Windows-10-10.0.17134-SP0 58 INFO: wrote C:\Users\user\Desktop\untitled1\test.spec 60 INFO: UPX is not available. 61 INFO: Extending PYTHONPATH with paths ['C:\\Users\\user\\Desktop\\untitled1', 'C:\\Users\\user\\Desktop\\untitled1'] 61 INFO: checking Analysis 187 INFO: checking PYZ 236 INFO: checking PKG 237 INFO: Building PKG because PKG-00.toc is non existent 238 INFO: Building PKG (CArchive) PKG-00.pkg Traceback (most recent call last): File "C:\Users\user\Desktop\untitled1\venv\Scripts\pyinstaller-script.py", line 11, in <module> load_entry_point('PyInstaller==3.4', 'console_scripts', 'pyinstaller')() File "C:\Users\user\Desktop\untitled1\venv\lib\site-packages\PyInstaller\__main__.py", line 111, in run run_build(pyi_config, spec_file, **vars(args)) File "C:\Users\user\Desktop\untitled1\venv\lib\site-packages\PyInstaller\__main__.py", line 63, in run_build PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs) File "C:\Users\user\Desktop\untitled1\venv\lib\site- packages\PyInstaller\building\build_main.py", line 838, in main build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build')) File "C:\Users\user\Desktop\untitled1\venv\lib\site- packages\PyInstaller\building\build_main.py", line 784, in build exec(text, spec_namespace) File "<string>", line 29, in <module> File "C:\Users\user\Desktop\untitled1\venv\lib\site-packages\PyInstaller\building\api.py", line 424, in __init__ strip_binaries=self.strip, upx_binaries=self.upx, File "C:\Users\user\Desktop\untitled1\venv\lib\site-packages\PyInstaller\building\api.py", line 196, in __init__ self.__postinit__() File "C:\Users\user\Desktop\untitled1\venv\lib\site-packages\PyInstaller\building\datastruct.py", line 158, in __postinit__ self.assemble() File "C:\Users\user\Desktop\untitled1\venv\lib\site-packages\PyInstaller\building\api.py", line 273, in assemble pylib_name = os.path.basename(bindepend.get_python_library_path()) File "C:\Users\user\AppData\Local\Programs\Python\Python37\lib\ntpath.py", line 214, in basename return split(p)[1] File "C:\Users\user\AppData\Local\Programs\Python\Python37\lib\ntpath.py", line 183, in split p = os.fspath(p) TypeError: expected str, bytes or os.PathLike object, not NoneType
What could be the problem?
-
Kunj Mehta about 5 yearsI did this and the build was also successful. But the application just closes on opening when opened from dist folder. When opened from inside build folder, it shows 'my_path'/python37.dll Module not Found error Any solution?
-
Kunj Mehta about 5 yearsWorking directory is the directory where your project is stored, right?
-
Sam Al-Ghammari about 5 years@KunjMehta correct, it is also the directory where all of the imported libraries of your project are stored.
-
DFE about 5 yearsWorked for me, thank you. Would be more sustainable to have a new version of this file committed for PyInstaller project
-
nelsonjchen almost 5 yearsIt has since been committed. It's not in a released PyInstaller but it's definitely in
master
today! -
VoteCoffee about 3 yearsI had to remove uuid to upgrade past 3.5. uuid is now built-in but some packages will install it as a req because of python 2 compatibility.