重要错误: 没有名为“编码”的模块

我最近重新安装了 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。我在这里能做什么?

357236 次浏览

对于 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 编辑

适用于 Windows10用户。

我在 Windows10上使用 python3.4。我安装了 python3.5。我找不到 PYTHONPATH,PYTHONHOME env 变量。如果我在 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时,可以在 Advanced Options 中自定义安装并检查 将 Python 添加到环境变量

我只是离开这里,以防有人有类似的问题访问这里,这样他们就不会浪费他们的宝贵时间来搞清楚。

对于 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):

解决这个问题其实很简单:

  1. 下载 Python 3.x 版本并运行。在 exe 文件中,它提供了一个选项,可以自定义在系统中安装 Python 的位置。例如,我选择了这个位置: < em > < strong > C: Program Files Python 36

  2. 然后打开系统属性,进入“ 高级”选项卡(或者你可以简单地这样做: 进入开始 > 搜索“ 环境变量”> 点击“编辑系统环境变量”)在“ Advanced”选项卡下,查找“ Environment Variables”并单击它。另一个名为“ Environment Variables”的窗口将弹出。

  3. 现在,请确保您的用户变量具有在“ Path 变量”中列出的正确的 Python 路径。在我的示例中,您应该看到 C: Program Files Python 36 。如果在那里没有找到它,请通过选择“路径变量”字段并单击“编辑”来添加它。

  4. 最后一步是在同一个窗口中的 System Variables 下重复检查 PYTHONHOMEPYTHONPATH字段。您应该看到与上面描述的相同的路径。如果不把它也添加到那里。

然后单击 OK 返回到 CMD 终端,并尝试检查 python。这个问题现在应该得到解决。这招对我很管用。

我在迁移到 Ubuntu 17.10时出现了这个错误,这个错误解决了这个问题:

sudo dpkg-reconfigure python3

也许你将不得不关闭你的会议和重新连接。

我也可以解决这个问题。 PYTHONPATH 和 PYTHONHOME 是原因。

在终端上运行这个

   touch ~/.bash_profile
open ~/.bash_profile

然后删除该文件中所有无用的部分,并保存。 我不知道如何建议这样做!

我在 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时选中了“ Add Python to environment variable in Advanced Options”。结果显示,环境变量“ PYTHONHOME”和“ PYTHONPATH”仍然是 python2.7。

最后,我通过修改“ PYTHONHOME”到 python3.6安装路径并删除变量“ PYTHONPATH”来解决这个问题。

看看/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

只需点击文件-> 设置-> 在项目选项卡下选择项目解释器-> 点击小齿轮图标-> 添加-> 系统解释器-> 在下拉菜单中选择你想要的 Python 版本

这似乎对我有用

我也有过类似的问题。我在计算机上安装了 Anaconda 和 python,我的 python 依赖项来自 Anaconda 目录。卸载 Anaconda 时,这个错误开始弹出。我加了 PYTHONPATH但还是不行。 我检查了 python -version,得知它仍然沿着水蟒之路前进。 我必须手动删除 Anaconda3目录,在此之后,python 开始从 PYTHONPATH获取依赖项。
问题解决了!

在使用 pipenv将 mac 更新到 macOS Catalina 时遇到了同样的问题。Pipenv 为您创建并管理一个 virtualenv,所以@Anoop-Malav 的早期建议是相同的,只是使用 Pipenv 删除基于当前目录的虚拟环境并重置它:

pipenv --rm
pipenv shell  # recreate a virtual env with your current Pipfile

我正面临这个问题“ ModuleNotFoundError: 在更新到 macOS Catalina 之后没有名为‘ encode’的模块”。

我的系统中安装了多个版本的 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中使用相同的链接。

因为这是谷歌上的第一个搜索结果,我想为其他有监狱问题的人提供以下信息:

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 导入监狱时,您都需要将依赖项和/usr/lib/pythonX.Y 链接到[ JAIL ]/usr/lib/。希望这个能帮上忙。

在我的例子中,仅仅更改水蟒文件夹的权限就可以起作用:

sudo chmod -R u=rwx,g=rx,o=rx /path/to/anaconda

在我的 macOS Catalina 10.15.3上尝试启动 MySql Workbench 8.0时出现了这个错误。

我通过在系统上安装 Python 3.7解决了这个问题。

我猜在将来,当 Workbench 的版本大于8时,它将需要更新的 Python 版本。只要查看错误中的库路径,就可以找到所需的版本。

我在 Debian 服务器上遇到了同样的问题,对我来说,问题是我把我的项目放在了一个没有权限访问 mod _ wsgi 的 /root/文件夹中。因此,我只是将我的项目移到 /var/www/html/并更新我的 VirtualHost 配置。

在我的例子中,有效的方法如下: 我将 conf 中的 env 路径从 /home/vinzee/.pyenv/versions/envname/bin/更改为 /home/vinzee/.pyenv/versions/envname/,并且成功了。

似乎环境路径需要是虚拟环境的根文件夹的路径(而不是 ROOT_VENV/bin/的路径)。

您还可以像其他人建议的那样尝试不使用尾部斜杠,但是在我的例子中,它既可以使用它,也可以不使用它。

看起来这个错误可能因为各种各样的原因而发生(给出了这里不同答案的数量)。

对于 ,这个问题与我的应用程序部署在一个 viralenv 中,并且 pyvenv.cfg文件拥有错误的权限有关。它必须可以由运行 uwsgi 的用户写入(在我的示例中是 http)。

我试了所有的方法,删除了 PYTHONPATH 和 PYTHONHOME-错误并没有消失。我忽略了在 VirtualHost 的 wsgi 配置中在 WSGIDaemonProcess 下指定了一个 python 主路径。我删除了它,错误就消失了。

我删除了 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 '\n' ' ')
sudo apt-get install --reinstall $(dpkg -S '/usr/lib/python2*' | cut -d ':' -f1 | cut -d ',' -f1 | sort | uniq | tr '\n' ' ')

重新安装我删除的所有文件包