ImportError: No module named 'encodings'

ImportError: No module named 'encodings'

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

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

对于 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添加到环境变量

我离开这里是为了防止有人遇到类似问题访问这里,这样他们就不会浪费宝贵的时间来解决问题。

对于 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. 当您下载 Python3.x 版本和 运行 .exe 文件时,它会为您提供一个选项来自定义您要在系统中安装的位置 Python.比如我选择这个位置:C:\Program Files\Python36

  2. 然后打开系统属性并转到“高级”选项卡(或者您可以简单地这样做:转到开始 > 搜索“environment variables" > 单击“编辑系统环境变量”。)在“高级”选项卡下,查找“环境变量”并单击它。将弹出另一个名为“环境变量”的 window。

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

  4. 最后一步是仔细检查系统变量下的 PYTHONHOMEPYTHONPATH 字段 window.您应该看到与上述相同的路径。如果没有也添加它。

然后单击“确定”并返回到 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 variables 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

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

这似乎对我有用

我遇到了类似的问题。我的计算机上安装了 anaconda 和 python,我的 python 依赖项来自 Anaconda 目录。当我卸载 Anaconda 时,此错误开始弹出。我添加了 PYTHONPATH 但它仍然没有成功。 我查看了 python -version 并知道它仍然在走 anaconda 路径。 我不得不手动删除 Anaconda3 目录,然后 python 开始从 PYTHONPATH 获取依赖项。
问题已解决!

在使用 pipenv 将我的 mac 更新为 macOS Catalina 时遇到同样的问题。 Pipenv 为你创建和管理一个 virtualenv,所以@Anoop-Malav 之前的建议是一样的,只是使用 pipenv 根据当前目录删除虚拟环境并重新设置它:

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

我在更新到 macOS Catalina 后遇到了这个问题"ModuleNotFoundError: No module named 'encodings"。

我的系统中安装了 Python 的多个版本。

从 macOS 系统中删除所有 python 版本(2.7 和 3.7.4)并重新安装最新的 python 3.8 对我有用。

要从 macOS 中删除 python,我已按照此处的说明进行操作 How to uninstall Python 2.7 on a Mac OS X 10.6.4?

以上 link 适用于 python 2.7,但您也可以将其用于 3.7。

因为这是 google 中的第一个结果,我只想为其他遇到监狱问题的人添加以下信息:

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 导入您的监狱时,您都需要 link 依赖项和 /usr/lib/pythonX.Y 到 [JAIL]/usr/lib/。希望这有帮助。

在我的例子中,只需更改 anaconda 文件夹的权限即可:

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 服务器上遇到了同样的问题,对我来说,问题是我将我的项目放在 /root/ 文件夹中,mod_wsgi 没有访问该文件夹的权限.所以我只是将我的项目移动到 /var/www/html/ 并更新了我的 VirtualHost 配置。

在我的例子中,有效的是:我将 conf 中的 env 路径从 /home/vinzee/.pyenv/versions/envname/bin/ 更改为 /home/vinzee/.pyenv/versions/envname/ 并且有效。

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

您还可以像其他人建议的那样尝试不使用尾部斜线,但就我而言,使用和不使用它都有效。

看来这个错误的发生可能有多种原因(考虑到此处不同答案的数量)。

对于,问题与我的应用程序部署在虚拟环境中,并且 pyvenv.cfg 文件的权限错误有关。它必须是用户可写的 uwsgi 是 运行 as(在我的例子中是 http)。

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