我之前卸载了 Python3.12(我曾在其上运行 Miniedit-WiFi 工具),保留了默认的 Python3.11;但是,无论我是从虚拟环境还是从基本 Python 解释器运行,只要我在 Python3.11 上运行 Python 脚本,就会不断弹出以下控制台日志错误。(但是,默认的 Python3.11 也仍然有问题,因为尽管还有其他项目,但我无法使用 pip 安装任何软件包。(这是在 上
Kubuntu-Mantic
)
我运行了另一个在虚拟环境中运行良好的 TensorFlow ML 脚本,并意识到问题出在 Python sudoer 系统中;当我尝试使用 sudo 权限运行 Python 脚本(例如:)时,总是会出现上面分享的控制台输出;
sudo python3 /path/to/any/python/script
因此,我打开了所有安装文件,/etc/sudoers.d/
但看不到 Python3.12 路径设置的任何痕迹,而 Python 路径是干净的,只有默认的基础 Python3.11 和 Python3.7。在我安装了 Python3.12 后,在 Pycharm 中使用应用程序为我的 Miniedit 项目sudome
自动化sudo
权限后,可能会出现此问题,但在我卸载 Python3.12 并将其从 Python 路径中清除后,我无法再使用sudo
权限运行 Python 脚本,因为控制台输出表明它的 Python 路径指向我已经卸载的 Python3.12。有人可以帮我追踪这个输出的来源吗
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Python path configuration:
PYTHONHOME = (not set)
PYTHONPATH = (not set)
program name = 'python3'
isolated = 0
environment = 1
user site = 1
safe_path = 0
import site = 1
is in build tree = 0
stdlib dir = '/usr/local/lib/python3.12'
sys._base_executable = '/usr/local/bin/python3'
sys.base_prefix = '/usr/local'
sys.base_exec_prefix = '/usr/local'
sys.platlibdir = 'lib'
sys.executable = '/usr/local/bin/python3'
sys.prefix = '/usr/local'
sys.exec_prefix = '/usr/local'
sys.path = [
'/usr/local/lib/python312.zip',
'/usr/local/lib/python3.12',
'/usr/local/lib/python3.12/lib-dynload',
]
Fatal Python error: init_fs_encoding: failed to get the Python codec of the filesystem encoding
Python runtime state: core initialized
ModuleNotFoundError: No module named 'encodings'
Current thread 0x00007f5dbb036740 (most recent call first):
<no Python frame>
答案1
我意识到基本的 Python3.11 配置文件和基本脚本已经在里面了,/usr/local/bin/
所以我在终端中使用了:
sudo nano /usr/local/bin/python3-config
编辑每个实例3.12
,3.11
保存配置文件,最后
sudo apt-get update
sudo apt upgrade
重新启动电脑并且成功了!