导入错误:没有名为“encodings”的模块
- 2025-01-06 08:32:00
- admin 原创
- 123
问题描述:
我最近重新安装了 ubuntu 并升级到 16.04 但无法使用 python:
$ python manage.py runserver
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named 'encodings'
Aborted
此时,python本身不起作用
$ python
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named 'encodings'
Aborted
甚至这个建议也不再有效:
unset PYTHONHOME
unset PYTHONPATH
每次我用一种方法修复它,它都会再次出现。几个答案有助于暂时修复它,但不是永久的。我已经多次重新安装了 python 和 python3。我该怎么办?
解决方案 1:
对于 Python-3,请尝试删除虚拟环境文件。然后重置它。
rm -rf venv
virtualenv -p /usr/bin/python3 venv/
source venv/bin/activate
pip install -r requirements.txt
https://wiki.ubuntu.com/XenialXerus/ReleaseNotes#Python_3
编辑
解决方案 2:
适用于Windows10用户。
我在 Windows10 上使用 python3.4。我安装了 python3.5。我找不到 PYTHONPATH、PYTHONHOME 环境变量。如果我在 CMD 控制台中命令 python,它一直使用 python3.4。我删除了 python3.4。每当我在 CMD 控制台中命令 python 时,它都会开始显示如下错误。
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named 'encodings'
我搜索了一下才找到我的问题。解决方案很简单。安装 python3.5 时,您可以自定义安装并在高级选项中选中将Python 添加到环境变量。
我离开这里只是为了以防有人遇到类似的问题来这里,这样他们就不会浪费宝贵的时间来弄清楚。
解决方案 3:
我在 Windows7 下遇到了同样的问题。错误消息如下:
Fatal Python error: Py_Initialize: unable to load the file system codec ModuleNotFoundError: No module named 'encodings' Current thread 0x000011f4 (most recent call first):
我已经安装了python 2.7(现已卸载),并且在安装python 3.6时选中了“在高级选项中将Python添加到环境变量”。 结果发现环境变量“ PYTHONHOME ”和“ PYTHONPATH ”仍然是python2.7。
最后我通过修改“ PYTHONHOME ”为 python3.6 安装路径并删除变量“ PYTHONPATH ”解决了这个问题。
解决方案 4:
对于 Windows7 上的相同问题
如果您的环境变量/系统变量设置不正确,您将看到如下错误:
Fatal Python error: Py_Initialize: unable to load the file system codec
ImportError: No module named 'encodings'
Current thread 0x00001db4 (most recent call first):
修复这个问题其实很简单:
当您下载 Python3.x 版本并运行 .exe 文件时,它会为您提供一个选项来自定义要在系统中安装 Python 的位置。例如,我选择了这个位置:C:\Program Files\Python36
然后打开系统属性并转到“高级”选项卡(或者您可以简单地执行以下操作:转到开始>搜索“环境变量”>单击“编辑系统环境变量”。)在“高级”选项卡下,查找“环境变量”并单击它。将弹出另一个名为“环境变量”的窗口。
现在确保您的用户变量在“路径变量”中列出了正确的 Python 路径。在我的示例中,您应该看到C:\Program Files\Python36。如果您在那里找不到它,请通过选择路径变量字段并单击编辑来添加它。
最后一步是在同一窗口中仔细检查系统变量下的PYTHONHOME和PYTHONPATH字段。您应该看到与上述相同的路径。如果没有,也请将其添加到那里。
然后单击“确定”并返回 CMD 终端,然后尝试检查 python。现在问题应该已经解决。它对我有用。
解决方案 5:
我在迁移到 Ubuntu 17.10 期间遇到了这个错误,这解决了这个问题:
sudo dpkg-reconfigure python3
也许您必须关闭会话并重新连接。
解决方案 6:
我已经删除了rm -r /usr/lib/python*
dpkg -S '/usr/lib/python3*' | grep encodings
然后发现我需要libpython3.10-minimal
sudo apt-get install --reinstall libpython3.10-minimal
我终于跑了
sudo apt-get install --reinstall $(dpkg -S '/usr/lib/python3*' | cut -d ':' -f1 | cut -d ',' -f1 | sort | uniq | tr '
' ' ')
sudo apt-get install --reinstall $(dpkg -S '/usr/lib/python2*' | cut -d ':' -f1 | cut -d ',' -f1 | sort | uniq | tr '
' ' ')
要重新安装我删除的所有软件包
解决方案 7:
更新到 macOS Catalina 后,我遇到了这个问题“ModuleNotFoundError:没有名为‘encodings’的模块”。
我的系统中安装了多个版本的 Python。
从 macOS 系统中删除所有 python 版本(2.7 和 3.7.4)并重新安装最新的 python 3.8 对我来说是有效的。
要从 macOS 中删除 python,我按照这里的说明进行操作如何在 Mac OS X 10.6.4 上卸载 Python 2.7?
上面的链接适用于 python 2.7,但您也可以将其用于 3.7。
解决方案 8:
查看 /lib/python3.5,您将看到指向 python 库的断开链接。将其重新创建到工作目录。
下一个错误 -
./script/bin/pip3
Failed to import the site module
Traceback (most recent call last):
File "/home/script/script/lib/python3.5/site.py", line 703, in <module>
main()
File "/home/script/script/lib/python3.5/site.py", line 683, in main
paths_in_sys = addsitepackages(paths_in_sys)
File "/home/script/script/lib/python3.5/site.py", line 282, in addsitepackages
addsitedir(sitedir, known_paths)
File "/home/script/script/lib/python3.5/site.py", line 204, in addsitedir
addpackage(sitedir, name, known_paths)
File "/home/script/script/lib/python3.5/site.py", line 173, in addpackage
exec(line)
File "<string>", line 1, in <module>
File "/home/script/script/lib/python3.5/types.py", line 166, in <module>
import functools as _functools
File "/home/script/script/lib/python3.5/functools.py", line 23, in <module>
from weakref import WeakKeyDictionary
File "/home/script/script/lib/python3.5/weakref.py", line 12, in <module>
from _weakref import (
ImportError: cannot import name '_remove_dead_weakref'
像这样修复 - https://askubuntu.com/questions/907035/importerror-cannot-import-name-remove-dead-weakref
cd my-virtualenv-directory
virtualenv . --system-site-packages
解决方案 9:
我尝试了所有方法,删除了 PYTHONPATH 和 PYTHONHOME - 错误并没有消失。我忘记了我在 VirtualHost 的 wsgi 配置中的 WSGIDaemonProcess 下指定了 python-home 路径。我删除了它,错误就消失了。
解决方案 10:
我遇到了类似的问题。我的电脑上安装了 anaconda 和 python,我的 python 依赖项来自 Anaconda 目录。当我卸载 Anaconda 时,这个错误开始弹出。我添加了,PYTHONPATH
但仍然没有运行。我检查了一下python -version
并发现它仍然在走 anaconda 路径。我不得不手动删除 Anaconda3 目录,之后 python 开始从中获取依赖项PYTHONPATH
。
问题解决了!
解决方案 11:
当我将我的 mac 更新到 macOS Catalina 时遇到了同样的问题,同时使用pipenv
。Pipenv 会为您创建并管理virtualenv
,因此@Anoop-Malav 之前的建议是相同的,只需使用 pipenv 根据当前目录删除虚拟环境并重置它:
pipenv --rm
pipenv shell # recreate a virtual env with your current Pipfile
解决方案 12:
就我而言,只需更改 anaconda 文件夹的权限即可:
sudo chmod -R u=rwx,g=rx,o=rx /path/to/anaconda
解决方案 13:
当我尝试在 macOS Catalina 10.15.3 上启动 MySql Workbench 8.0 时出现此错误。
我通过在我的系统上安装 Python 3.7 解决了这个问题。
我猜将来当 Workbench 的版本大于 8 时,它将需要更新版本的 Python。只需查看错误中的库路径,您就会找到所需的版本。
解决方案 14:
因为这是谷歌的第一个结果,所以我只想为遇到 jail 问题的人添加以下信息:
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ModuleNotFoundError: No module named 'encodings'
Current thread 0x00007f079b16d740 (most recent call first):
Aborted (core dumped)
当尝试将 python 导入到 jail 时,您既需要将依赖项和 /usr/lib/pythonX.Y 链接到 [JAIL]/usr/lib/。希望这能有所帮助。
解决方案 15:
我在 Debian 服务器上遇到了同样的问题,对我来说,问题是我将项目放在了/root/
mod_wsgi 无权访问的文件夹中。因此,我只需将项目移入/var/www/html/
并更新我的 VirtualHost 配置即可。
解决方案 16:
就我而言,有效的方法如下:我将 conf 中的环境路径从 更改为/home/vinzee/.pyenv/versions/envname/bin/
,/home/vinzee/.pyenv/versions/envname/
然后它就起作用了。
似乎环境路径需要是虚拟环境根文件夹的路径(而不是的路径ROOT_VENV/bin/
)。
您还可以按照其他人的建议尝试不使用尾随斜杠,但就我而言,无论有没有斜杠都可以正常工作。
解决方案 17:
似乎此错误可能由于多种原因而发生(考虑到这里有许多不同的答案)。
对我来说,问题与我的应用程序部署在虚拟环境中有关,并且pyvenv.cfg
文件具有错误的权限。它必须由运行 uwsgi 的用户(在我的情况下是http
)可写入。
解决方案 18:
cd /home/foobar/tools/
wget https://github.com/indygreg/python-build-standalone/releases/download/20241016/cpython-3.11.10+20241016-x86_64_v3-unknown-linux-gnu-pgo+lto-full.tar.zst
tar axvf cpython-3.11.10+20241016-x86_64_v3-unknown-linux-gnu-pgo+lto-full.tar.zst
mv python cpython-3.11.10
export PYTHONHOME=/home/foobar/tools/cpython-3.11.10/install
export PYTHONPATH=/home/foobar/tools/cpython-3.11.10/install
export PATH=/home/foobar/tools/cpython-3.11.10/install/bin:$PATH
解决方案 19:
只需转到文件 -> 设置 -> 在项目选项卡下选择项目解释器 -> 单击小齿轮图标 -> 添加 -> 系统解释器 -> 在下拉菜单中选择所需的 Python 版本
这似乎对我有用
解决方案 20:
我也能修复这个问题。原因是 PYTHONPATH 和 PYTHONHOME。
在终端中运行
touch ~/.bash_profile
open ~/.bash_profile
然后删除此文件所有无用的部分,并保存。我不知道这样做是否值得推荐!