ImportError:没有名为'encodings'的模块

时间:2016-06-30 20:33:46

标签: python python-3.x virtualenv python-2.x development-environment

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

14 个答案:

答案 0 :(得分:63)

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

答案 1 :(得分:11)

对于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时,可以在高级选项中自定义安装并检查将Python添加到环境变量

我离开这里是因为有人有类似的问题访问这里,这样他们就不会浪费宝贵的时间去弄清楚。

答案 2 :(得分:6)

我在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(现在已经卸载),我检查了#34;将Python添加到高级选项中的环境变量&#34;安装python 3.6时。结果是环境变量&#34; PYTHONHOME &#34;和&#34; PYTHONPATH &#34;仍然是python2.7。

最后我通过修改&#34; PYTHONHOME &#34;解决了这个问题。到python3.6安装路径并删除变量&#34; PYTHONPATH &#34;。

答案 3 :(得分:5)

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

sudo dpkg-reconfigure python3

也许您必须关闭会话并重新连接。

答案 4 :(得分: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):

解决这个问题非常简单:

  1. 当您下载Python3.x版本并运行.exe文件时,它会为您提供一个选项,用于自定义系统中要安装Python的位置。例如,我选择了这个位置: C:\ Program Files \ Python36

  2. 然后打开系统属性并转到&#34; 高级&#34;标签(或者你可以这样做:转到开始&gt;搜索&#34; 环境变量&#34;&gt;点击&#34;编辑系统环境变量&#34;。 )&#34;高级&#34;选项卡,查找&#34;环境变量&#34;然后单击它。另一个名为&#34; Environment Variables&#34;的窗口会弹出。

  3. 现在确保您的用户变量在&#34;路径变量&#34;中列出了正确的Python路径。在我的示例中,您应该看到 C:\ Program Files \ Python36 。如果您在那里找不到它,请通过选择Path Variable字段并单击Edit。添加它。

  4. 最后一步是在同一窗口中仔细检查系统变量下的 PYTHONHOME PYTHONPATH 字段。您应该看到与上述相同的路径。如果不在那里添加它。

  5. 然后单击OK并返回CMD终端,并尝试检查python。现在应该解决这个问题。它对我有用。

答案 5 :(得分:1)

就我而言,仅更改anaconda文件夹的权限即可:

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

答案 6 :(得分:1)

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

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

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

答案 7 :(得分:0)

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

答案 8 :(得分:0)

我有一个类似的问题。我在计算机上同时安装了anaconda和python,并且我的python依赖项来自Anaconda目录。当我卸载Anaconda时,此错误开始弹出。我添加了PYTHONPATH,但仍然没有成功。 我用a/b and a*b进行了检查,然后知道它仍在使用anaconda路径。 我不得不手动删除Anaconda3目录,然后python开始从*c & *d获取依赖项。
问题已解决!

答案 9 :(得分:0)

使用pipenv时,将我的mac更新到macOS Catalina时遇到相同的问题。 Pipenv为您创建和管理virtualenv,因此@ Anoop-Malav的早期建议是相同的,只是使用pipenv根据当前目录删除虚拟环境并重置它:

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

答案 10 :(得分:0)

在更新到macOS Catalina后,我遇到此问题“ ModuleNotFoundError:没有名为'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?

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

答案 11 :(得分:-1)

只需转到文件->设置->在项目标签下选择项目解释器->单击小齿轮图标->添加->系统解释器->在下拉菜单中选择所需的python版本

这似乎对我有用

答案 12 :(得分:-1)

因为这是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导入监狱时,您都需要将依赖项和/usr/lib/pythonX.Y链接到[JAIL] / usr / lib /。希望这会有所帮助。

答案 13 :(得分:-4)

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

在终端中运行

   touch ~/.bash_profile
   open ~/.bash_profile

然后删除此文件的所有无用部分,并保存。 我不知道这是怎么建议的!