An error for generating an exe file using pyinstaller - typeerror: expected str, bytes or os.PathLike object, not NoneType

28,591

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 venvpath 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. enter image description 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.

Share:
28,591
Admin
Author by

Admin

Updated on November 07, 2020

Comments

  • Admin
    Admin over 3 years

    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-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
    Kunj Mehta about 5 years
    I 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
    Kunj Mehta about 5 years
    Working directory is the directory where your project is stored, right?
  • Sam Al-Ghammari
    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
    DFE about 5 years
    Worked for me, thank you. Would be more sustainable to have a new version of this file committed for PyInstaller project
  • nelsonjchen
    nelsonjchen almost 5 years
    It has since been committed. It's not in a released PyInstaller but it's definitely in master today!
  • VoteCoffee
    VoteCoffee about 3 years
    I 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.