我正在使用auto py to exe库将文件从 python 传递到 .exe 。但是当转换test.py时,我得到一个错误,它给了我这个 Traceback,我不知道它可能是由于什么。
File "c:\python\python37\lib\site-packages\PyInstaller\lib\modulegraph\modulegraph.py", line 1638, in _find_head_package
target_module_headname, target_package_name, source_package)
File "c:\python\python37\lib\site-packages\PyInstaller\depend\analysis.py", line 382, in _safe_import_module
module_basename, module_name, parent_package)
File "c:\python\python37\lib\site-packages\PyInstaller\lib\modulegraph\modulegraph.py", line 2055, in _safe_import_module
module_name, file_handle, pathname, metadata)
File "c:\python\python37\lib\site-packages\PyInstaller\lib\modulegraph\modulegraph.py", line 2093, in _load_module
m = self._load_package(fqname, pathname, packagepath)
File "c:\python\python37\lib\site-packages\PyInstaller\lib\modulegraph\modulegraph.py", line 2912, in _load_package
self._load_module(fqname, fp, buf, stuff)
File "c:\python\python37\lib\site-packages\PyInstaller\lib\modulegraph\modulegraph.py", line 2105, in _load_module
co = compile(contents, pathname, 'exec', ast.PyCF_ONLY_AST, True)
ValueError: source code string cannot contain null bytes
这是一个较长的错误跟踪,但我只放了一部分。我把我只用了img包的项目结构,其他的python文件不用,我只想通过tests.py。mainClass 和预处理我根本不使用它们。是什么导致了这个错误?
问题似乎是“空”字节的存在,即
0x00
源文件中的ascii值,如果你没有linux你可以使用python控制台本身来消除它们。我创建了一个带有字符的文件 test.py
0x00
来重现错误一个文件的创建方式
prueba2.py
相同prueba.py
但没有空字符,出于安全原因我不直接替换它prueba.py
,但是一旦验证它是可以的,就应该替换它。顺便说一句,我建议你在 Windows上使用WSL来拥有一个 linux,它的命令在某些情况下会有所帮助,特别是如果你正在开发