ImportError:没有名为“编码”的模块


106

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


这与Django有关还是与Python有关?您可能需要使用适当的标签来编辑您的问题。
Moses Koledoye

2
只是python,我碰巧正在使用django
codyc4321

似乎python安装不完整。您是通过apt安装python还是从源代码编译并安装了它?运行which python以检查您首先在$ PATH中拥有哪个python二进制文件。
2016年

您是否尝试过通过卸载并重新安装python2和python3 apt

尝试将pip3 install -r requirments.txt插入虚拟环境时,我使用Bitnami Django堆栈遇到了这一问题。无需使用虚拟环境即可正常工作。我没有花时间弄清楚为什么这是一个问题。
布莱德·罗兹

Answers:


88

对于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
大!感谢您教我如何使用virtualenv命令将python3安装到环境中!由于某种原因,我花了大约2个月才找到它。令人惊叹...
MadPhysicist

2
嗨,我尝试在基于RHEL的Amazon AMI设备上执行此操作,但是它不起作用。还有其他方法可以解决吗?
Divij Sehgal

1
当我进入最后一个命令时,它给了我下面的错误,您可以请解决...无法打开需求文件:[错误2]没有这样的文件或目录:“requirements.txt”
迪帕克·乔拉

1
@DeepakChawla requirements.txt应该出现在发出此命令的位置的pwd中,它与创建环境无关,它是一种以批处理方式安装软件包的方法。
Amar

7
不是source venv/bin/activate吗?
基思

16

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

我只是在这里离开,以防有人遇到类似的问题来这里,以便他们不会浪费很多宝贵的时间来弄清楚。


11

我在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 ” 来解决了该问题。


9

对于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. 然后打开系统属性,然后转到“ 高级 ”选项卡(或者您可以简单地做到这一点:转到“开始”>“搜索” 环境变量 ”>单击“编辑系统环境变量”。)在“高级”选项卡下,查找单击“环境变量”,然后单击它。将会弹出另一个名为“环境变量”的窗口。

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

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

然后单击“确定”并返回到CMD终端,然后尝试检查python。现在应解决此问题。它为我工作。


这与win10完全相同。在我的情况下,只是将PYTHONHOME和PYTHONPATH设置为较旧的安装。
安德烈斯Marafioti

@dotpy_novice您能否详细介绍第4步?我的用户变量中没有列出任何路径,并且按照您在步骤3中的说明进行了添加。现在,我有点犹豫要继续。系统变量中没有PYTHONHOMEPYTHONPATH。我应该自己创建它们吗,如果是,应该为变量名变量值插入什么?
bit_scientist

6

在迁移到Ubuntu 17.10的过程中出现了此错误,这解决了问题:

sudo dpkg-reconfigure python3

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


我有16.04,这不能解决我的问题。我只是想了解,为什么会发生
Xavitoj Cheema,

ubuntu 16.4上存在同样的问题。我应该重新安装Ubuntu吗?/usr/sbin/dpkg-reconfigure: python3 ist kaputt oder nicht komplett installiert
Timo's

在上18.04 Lubuntu,它说Fatal Python error: Py_Initialize: Unable to get the locale encoding
Timo

1

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

1

更新到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。


0

我有一个类似的问题。我在计算机上同时安装了anaconda和python,而我的python依赖项则来自Anaconda目录。当我卸载Anaconda时,此错误开始弹出。我加了,PYTHONPATH但还是没去。我检查了python -version一下,发现它仍在沿用蟒蛇之路。我不得不手动删除Anaconda3目录,然后python开始从接收依赖PYTHONPATH
问题已解决!


0

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

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

0

在我的情况下,只需更改anaconda文件夹的权限即可:

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

-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 /。希望这可以帮助。


亲爱的@matt,您能提供将“ jail” pythonx.y插入的步骤吗?
普拉纳夫

@Pranav我正在使用此脚本:gist.github.com/williamhaley/5a499cd7c83aa0e01eaf ,然后可以运行copy_binary pythonX.Y,然后在真实根目录/usr/lib/pythonX.Y下找到这些库,其中XY是您的python版本(对于范例python3.7)。将它们复制到您的监狱/ usr / lib /中,就可以设置好了。干杯
马特

-2

只需转到File-> Settings->在Project选项卡下选择Project Interpreter->单击小齿轮图标-> Add-> System Interpreter->在下拉菜单中选择所需的python版本

这似乎对我有用


这不是他的问题
NotSoShabby

-12

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

在终端上运行

   touch ~/.bash_profile
   open ~/.bash_profile

然后删除此文件的所有无用部分,然后保存。我不知道这样做是多么推荐!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.