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

前端 未结 5 1553
逝去的感伤
逝去的感伤 2020-12-09 12:31

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

相关标签:
5条回答
  • 2020-12-09 12:48

    The bug was resolved in version 3.6 of PyInstaller. Just update and will work fine.

    0 讨论(0)
  • 2020-12-09 12:56

    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

    0 讨论(0)
  • 2020-12-09 12:58

    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.

    0 讨论(0)
  • 2020-12-09 13:01

    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.

    For Linux users, follow my other answer here.

    0 讨论(0)
  • 2020-12-09 13:05

    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.)

    0 讨论(0)
提交回复
热议问题