简体   繁体   English

使用 pyinstaller 生成 exe 文件的错误 - typeerror: expected str, bytes or os.PathLike object, not NoneType

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

I am trying to build an .exe file from .py file using pysinstaller and Python 3.7.2.我正在尝试使用pysinstaller和 Python 3.7.2 从.py文件构建一个.exe文件。

It worked with Python 3.6;它适用于 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.然后我重新安装了最新版本的 Python (3.7.2) 并尝试生成一个 exe 文件,但 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?可能是什么问题呢?

我发现了以下解决办法:更换bindepend.py<myProject_path>\\venv\\Lib\\site-packages\\PyInstaller\\dependLoran425在GitHub上提供的文件在这里

As I have read from many forums here and here and discussions regarding this issue caused by Pyinstaller.正如我从这里这里的许多论坛以及关于 Pyinstaller 引起的这个问题的讨论中读到的。 If you are using Pycharm or any virtual environment.如果您使用的是 Pycharm 或任何虚拟环境。 Unfortunatelly Pycharm creates its local vertual environment in venv path once you indicate the interpreter .不幸的是,一旦您指定了interpretervenv就会在venv路径中创建其本地虚拟环境。 So, you should set the external tool (pyinstaller) to the real path of your python 3.7 .exe as the picture shows here.因此,您应该将外部工具(pyinstaller)设置为您的python 3.7 .exe 的真实路径,如图所示。 在此处输入图片说明

For Linux users, follow my other answer here .对于Linux用户,请在此处按照我的其他答案进行操作。

In my case the problem occurs when I'm using the standard library's venv , but not when I'm using virtualenv .在我的情况下,当我使用标准库的venv时会出现问题,但当我使用virtualenv时不会出现问题。 (However I had to use virtualenv==16.1.0 because of another bug .) (但是,由于另一个错误,我不得不使用virtualenv==16.1.0 。)

The bug was resolved in version 3.6 of PyInstaller.该错误已在 PyInstaller 3.6 版中解决。 Just update and will work fine.只需更新即可正常工作。

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注释掉name时,

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.应用程序在包含name时构建。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Django TypeError:预期的 str、bytes 或 os.PathLike object,不是 NoneType - Django TypeError: Expected str, bytes or os.PathLike object, not NoneType pyqtdeploy : TypeError: 预期的 str、bytes 或 os.PathLike 对象,而不是 NoneType - pyqtdeploy : TypeError: expected str, bytes or os.PathLike object, not NoneType 预期的 str、bytes 或 os.PathLike object,而不是 NoneType(tkinter 错误) - expected str, bytes or os.PathLike object, not NoneType (tkinter error) 文件=打开(广告,'wb')类型错误:预期的str,字节或os.PathLike object,不是NoneType - file = open(ad, 'wb') TypeError: expected str, bytes or os.PathLike object, not NoneType 有关TypeError的错误:预期的str,字节或os.PathLike对象,而不是NoneType - An error about TypeError: expected str, bytes or os.PathLike object, not NoneType makemigration 导致错误“TypeError:预期的 str、字节或 os.PathLike 对象,而不是 NoneType” - makemigration causing error "TypeError: expected str, bytes or os.PathLike object, not NoneType" python 中的子进程调用,出现错误“TypeError: expected str, bytes or os.PathLike object, not NoneType - subprocess call in python, getting error "TypeError: expected str, bytes or os.PathLike object, not NoneType TypeError: 预期的 str、bytes 或 os.PathLike object, not WindowsPath while conversion.py using Pyinstaller - TypeError: expected str, bytes or os.PathLike object, not WindowsPath while converting .py using Pyinstaller 预期的 str、bytes 或 os.PathLike 对象,而不是 NoneType - expected str, bytes or os.PathLike object, not NoneType 我的文件系统错误:TypeError: expected str, bytes or os.PathLike object, not date - my file system error : TypeError: expected str, bytes or os.PathLike object, not date
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM