PyInstaller:3.10.0b4-ImportError:没有名为_bootlocale的模块



我安装了Python 10的Beta 4(我必须使用它,因为我需要仅在v3.10中可用的模式匹配功能(:

C:UsersmynameDocumentsProjectsProject MigrationSeleniumExamplePy>py -3 --version
Python 3.10.0b4

我确保我的pyinstaller是最新的:

C:UsersmynameDocumentsProjectsProject MigrationSeleniumExamplePy>pip install --upgrade pyinstaller
Requirement already satisfied: pyinstaller in c:usersmynameappdatalocalprogramspythonpython310libsite-packages (4.4)
Requirement already satisfied: pefile>=2017.8.1 in c:usersmynameappdatalocalprogramspythonpython310libsite-packages (from pyinstaller) (2021.5.24)
Requirement already satisfied: pyinstaller-hooks-contrib>=2020.6 in c:usersmynameappdatalocalprogramspythonpython310libsite-packages (from pyinstaller) (2021.2)
Requirement already satisfied: pywin32-ctypes>=0.2.0 in c:usersmynameappdatalocalprogramspythonpython310libsite-packages (from pyinstaller) (0.2.0)
Requirement already satisfied: setuptools in c:usersmynameappdatalocalprogramspythonpython310libsite-packages (from pyinstaller) (56.0.0)
Requirement already satisfied: altgraph in c:usersmynameappdatalocalprogramspythonpython310libsite-packages (from pyinstaller) (0.17)
Requirement already satisfied: future in c:usersmynameappdatalocalprogramspythonpython310libsite-packages (from pefile>=2017.8.1->pyinstaller) (0.18.2)

我在尝试将我彻底测试过的python代码转换为可执行代码时,遇到了ImportError:没有名为_bootlocale的模块错误:

**C:UsersmynameDocumentsProjectsProject MigrationSeleniumExamplePy>pyinstaller --onefile --clean ExtractRules.spec**
83 INFO: PyInstaller: 4.4
83 INFO: Python: 3.10.0b4
100 INFO: Platform: Windows-10-10.0.18363-SP0
110 INFO: UPX is not available.
110 INFO: Removing temporary files and cleaning cache in C:UsersmynameAppDataLocalpyinstaller
113 INFO: Extending PYTHONPATH with paths
['C:\Users\myname\Documents\Projects\Project '
'Migration\SeleniumExamplePy',
'C:\Users\myname\Documents\Projects\Project '
'Migration\SeleniumExamplePy']
126 INFO: checking Analysis
126 INFO: Building Analysis because Analysis-00.toc is non existent
126 INFO: Initializing module dependency graph...
126 INFO: Caching module graph hooks...
139 INFO: Analyzing base_library.zip ...
3449 INFO: Processing pre-find module path hook distutils from 'c:\users\myname\appdata\local\programs\python\python310\lib\site-packages\PyInstaller\hooks\pre_find_module_path\hook-distutils.py'.
3449 INFO: distutils: retargeting to non-venv dir 'c:\users\myname\appdata\local\programs\python\python310\lib'
Traceback (most recent call last):
File "c:usersmynameappdatalocalprogramspythonpython310librunpy.py", line 196, in _run_module_as_main
return _run_code(code, main_globals, None,
File "c:usersmynameappdatalocalprogramspythonpython310librunpy.py", line 86, in _run_code
exec(code, run_globals)
File "C:UsersmynameAppDataLocalProgramsPythonPython310Scriptspyinstaller.exe__main__.py", line 7, in <module>
File "c:usersmynameappdatalocalprogramspythonpython310libsite-packagesPyInstaller__main__.py", line 126, in run
run_build(pyi_config, spec_file, **vars(args))
File "c:usersmynameappdatalocalprogramspythonpython310libsite-packagesPyInstaller__main__.py", line 65, in run_build
PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
File "c:usersmynameappdatalocalprogramspythonpython310libsite-packagesPyInstallerbuildingbuild_main.py", line 758, in main
build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build'))
File "c:usersmynameappdatalocalprogramspythonpython310libsite-packagesPyInstallerbuildingbuild_main.py", line 705, in build
exec(code, spec_namespace)
File "ExtractRules.spec", line 7, in <module>
a = Analysis(['ExtractRules.py'],
File "c:usersmynameappdatalocalprogramspythonpython310libsite-packagesPyInstallerbuildingbuild_main.py", line 254, in __init__
self.__postinit__()
File "c:usersmynameappdatalocalprogramspythonpython310libsite-packagesPyInstallerbuildingdatastruct.py", line 159, in __postinit__
self.assemble()
File "c:usersmynameappdatalocalprogramspythonpython310libsite-packagesPyInstallerbuildingbuild_main.py", line 354, in assemble
self.graph = initialize_modgraph(
File "c:usersmynameappdatalocalprogramspythonpython310libsite-packagesPyInstallerdependanalysis.py", line 882, in initialize_modgraph
graph = PyiModuleGraph(
File "c:usersmynameappdatalocalprogramspythonpython310libsite-packagesPyInstallerdependanalysis.py", line 122, in __init__
self._analyze_base_modules()
File "c:usersmynameappdatalocalprogramspythonpython310libsite-packagesPyInstallerdependanalysis.py", line 289, in _analyze_base_modules
self._base_modules = [mod
File "c:usersmynameappdatalocalprogramspythonpython310libsite-packagesPyInstallerdependanalysis.py", line 291, in <listcomp>
for mod in self.import_hook(req)]
File "c:usersmynameappdatalocalprogramspythonpython310libsite-packagesPyInstallerlibmodulegraphmodulegraph.py", line 1505, in import_hook
target_package, target_module_partname = self._find_head_package(
File "c:usersmynameappdatalocalprogramspythonpython310libsite-packagesPyInstallerlibmodulegraphmodulegraph.py", line 1711, in _find_head_package
raise ImportError("No module named " + target_package_name)
ImportError: No module named _bootlocale

我看了这条评论https://bugzilla.redhat.com/show_bug.cgi?id=1899950AzyCrw4282发布链接以回应一个非常类似的问题PyInstaller-ImportError:没有名为_bootlocale的模块Victor Stinner发表声明2021-01-19 10:25:32 UTC

"哦,_bootlocale是一个不应该导入的私有模块直接地我把它拆了,换上了一个新的_语言环境_Python 3.10中的get_locale_encoding((函数";

那么,如果模块被移除,为什么最新的pyinstaller仍然试图将其拉入?是因为我使用的是Python 3.10b4,而pyinstaller还没有更新吗?是否有方法将_bootlocale模块从可执行文件构建中排除,以便能够构建可执行文件?

我对我的程序进行了详尽的测试,从.py运行时没有问题。我不调用任何直接引用bootlocale模块的东西,也不100%确定它在从3.10中删除之前做了什么或做了什么。

这是一个Python 3.10兼容性问题,这里提到了它。

可以通过将--exclude-module _bootlocale添加到命令中来解决此问题。

例如:

pyinstaller.exe app.py --exclude-module _bootlocale

遇到同样的问题,您只需要安装pyinstaller,然后安装3.10支持。

用途:

pip install pyinstaller
pip install https://github.com/rokm/pyinstaller/archive/refs/heads/python-3.10.zip

尝试安装最新版本的Pyinstaller
这解决了我的问题:

pip install pyinstaller==4.10

这似乎是pyinstaller和python之间的版本不匹配。我最近升级到python3.10,从requirements.txt安装,然后出现了这个问题。我运行的是pyinstaller 4.5.1,但最新的是pyinstaller 5.1。您可以通过以下操作获得最新的pyinstaller:

pip install --upgrade pyinstaller

python -m pip install --upgrade pyinstaller

使用此命令首先安装pyinstaller

pip install pyinstaller==4.10

或者,如果您想安装最新版本的pyinstaller,请使用:

pip install pyinstaller

安装后,尝试再次创建您的exe,它将工作。

在我的案例中,我通过卸载fbs包解决了这个问题

pip3 uninstall fbs

我在诗歌项目中通过编辑pyproject.toml:修复了它

[tool.poetry.dependencies]
python = "^3.8"

[tool.poetry.dependencies]
python = "^3.8,<3.11"

最新更新