技術背景
在上一篇博客中執行過conda的更新以及用conda安裝了gxx_linux-64
之后,再執行pip的一些指令時,就會給出如下所示的報錯:
$ python3 -m pip list
Traceback (most recent call last):
File "/home/dechin/anaconda3/lib/python3.8/runpy.py", line 194, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/home/dechin/anaconda3/lib/python3.8/runpy.py", line 87, in _run_code
exec(code, run_globals)
File "/home/dechin/anaconda3/lib/python3.8/site-packages/pip/__main__.py", line 29, in <module>
from pip._internal.cli.main import main as _main
File "/home/dechin/anaconda3/lib/python3.8/site-packages/pip/_internal/cli/main.py", line 9, in <module>
from pip._internal.cli.autocompletion import autocomplete
File "/home/dechin/anaconda3/lib/python3.8/site-packages/pip/_internal/cli/autocompletion.py", line 10, in <module>
from pip._internal.cli.main_parser import create_main_parser
File "/home/dechin/anaconda3/lib/python3.8/site-packages/pip/_internal/cli/main_parser.py", line 8, in <module>
from pip._internal.cli import cmdoptions
File "/home/dechin/anaconda3/lib/python3.8/site-packages/pip/_internal/cli/cmdoptions.py", line 23, in <module>
from pip._internal.cli.parser import ConfigOptionParser
File "/home/dechin/anaconda3/lib/python3.8/site-packages/pip/_internal/cli/parser.py", line 12, in <module>
from pip._internal.configuration import Configuration, ConfigurationError
File "/home/dechin/anaconda3/lib/python3.8/site-packages/pip/_internal/configuration.py", line 27, in <module>
from pip._internal.utils.misc import ensure_dir, enum
File "/home/dechin/anaconda3/lib/python3.8/site-packages/pip/_internal/utils/misc.py", line 42, in <module>
from pip._internal.locations import get_major_minor_version, site_packages, user_site
File "/home/dechin/anaconda3/lib/python3.8/site-packages/pip/_internal/locations/__init__.py", line 9, in <module>
from . import _distutils, _sysconfig
File "/home/dechin/anaconda3/lib/python3.8/site-packages/pip/_internal/locations/_distutils.py", line 18, in <module>
from .base import get_major_minor_version
File "/home/dechin/anaconda3/lib/python3.8/site-packages/pip/_internal/locations/base.py", line 14, in <module>
site_packages = sysconfig.get_path("purelib") # type: typing.Optional[str]
File "/home/dechin/anaconda3/lib/python3.8/sysconfig.py", line 521, in get_path
return get_paths(scheme, vars, expand)[name]
File "/home/dechin/anaconda3/lib/python3.8/sysconfig.py", line 511, in get_paths
return _expand_vars(scheme, vars)
File "/home/dechin/anaconda3/lib/python3.8/sysconfig.py", line 172, in _expand_vars
_extend_dict(vars, get_config_vars())
File "/home/dechin/anaconda3/lib/python3.8/sysconfig.py", line 559, in get_config_vars
_init_posix(_CONFIG_VARS)
File "/home/dechin/anaconda3/lib/python3.8/sysconfig.py", line 430, in _init_posix
_temp = __import__(name, globals(), locals(), ['build_time_vars'], 0)
ModuleNotFoundError: No module named '_sysconfigdata_x86_64_conda_linux_gnu'
問題定位與解決
經過一圈的檢索,最后對問題的出現原因定位為:在某一個版本的python中丟失了一個備份文件,通常在同一個版本的python下會有兩個相同的_sysconfigdata_x86_64_conda_cos6_linux_gnu.py
文件和_sysconfigdata_x86_64_conda_linux_gnu.py
文件。而在某些程序的運行過程中會依賴於其中的一個,因此我們需要做的就是檢索系統中是否存在有這兩個文件:
$ sudo find ~ -name _sysconfigdata_x86_64*
[sudo] dechin 的密碼:
/home/dechin/anaconda3/lib/python3.8/_sysconfigdata_x86_64_apple_darwin13_4_0.py
/home/dechin/anaconda3/lib/python3.8/__pycache__/_sysconfigdata_x86_64_apple_darwin13_4_0.cpython-38.pyc
/home/dechin/anaconda3/lib/python3.8/_sysconfigdata_x86_64_conda_cos6_linux_gnu.py
這里我們發現當前使用的python3.8
路徑下只有一個_sysconfigdata_x86_64_conda_cos6_linux_gnu.py
文件而沒有_sysconfigdata_x86_64_conda_linux_gnu.py
文件,因此我們只需要講該文件拷貝一份即可:
$ cp /home/dechin/anaconda3/lib/python3.8/_sysconfigdata_x86_64_conda_cos6_linux_gnu.py /home/dechin/anaconda3/lib/python3.8/_sysconfigdata_x86_64_conda_linux_gnu.py
此時再重新執行pip的指令:
$ python3 -m pip listPackage Version
---------------------------------- -----------------
absl-py 0.13.0
adamod 0.0.3
affinity 0.1.0
alabaster 0.7.12
anaconda-client 1.8.0
anaconda-navigator 1.10.0
anaconda-project 0.10.1
anyio 2.2.0
...
成功運行,問題解決。
總結概要
在近期conda的版本更新中,有可能會刪除路徑下的_sysconfigdata_x86_64_conda_linux_gnu模塊相關備份文件,而在其他的一些軟件的運行過程中有可能依賴於這個備份文件,這就會導致運行過程報錯模塊無法找到的問題。最終我們通過重新復制備份這個文件解決了該問題。
版權聲明
本文首發鏈接為:https://www.cnblogs.com/dechinphy/p/sysconfigdata-error.html
作者ID:DechinPhy
更多原著文章請參考:https://www.cnblogs.com/dechinphy/
打賞專用鏈接:https://www.cnblogs.com/dechinphy/gallery/image/379634.html
騰訊雲專欄同步:https://cloud.tencent.com/developer/column/91958