ImportError: ไม่มีโมดูลชื่อ 'การเข้ารหัส'


114

ฉันเพิ่งติดตั้งอูบุนตูใหม่และอัปเกรดเป็น 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 จะไม่สมบูรณ์ คุณได้ติดตั้ง python ผ่าน apt หรือคุณรวบรวมและติดตั้งจากแหล่งที่มาหรือไม่? เรียกใช้which pythonเพื่อตรวจสอบไบนารี python ที่คุณมีเป็นอันดับแรกใน $ PATH
HAL

คุณได้ลองถอนการติดตั้งและติดตั้งใหม่ทั้ง python2 และ python3 ผ่านaptหรือไม่?

ฉันพบสิ่งนี้โดยใช้สแต็ก Bitnami Django เมื่อพยายาม pip3 install -r requirments.txt int a virtual env มันทำงานได้ดีโดยไม่ต้องใช้ env เสมือน ฉันไม่ได้ใช้เวลาหาสาเหตุว่าทำไมจึงเป็นปัญหา
Brad Rhoads

คำตอบ:


93

สำหรับ 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
เยี่ยมมาก! ขอบคุณที่สอนวิธีติดตั้ง python3 ลงใน env โดยใช้virtualenvคำสั่ง! ด้วยเหตุผลบางอย่างฉันใช้เวลาประมาณ 2 เดือนในการค้นหามัน Amazing ...
MadPhysicist

2
สวัสดีฉันพยายามทำสิ่งนี้บนอุปกรณ์ Amazon AMI ของฉัน (อิงตาม RHEL) แต่ไม่ได้ผล วิธีอื่นที่สามารถแก้ไขได้?
Divij Sehgal

1
เมื่อฉันป้อนคำสั่งสุดท้ายมันทำให้ฉันมีข้อผิดพลาดด้านล่างโปรดแก้ไข ... ไม่สามารถเปิดไฟล์ข้อกำหนด: [Errno 2] ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว: 'requirements.txt'
Deepak Chawla

1
@DeepakChawla requirements.txt ควรมีอยู่ใน pwd จากที่ที่คุณใช้คำสั่งนี้และไม่มีส่วนเกี่ยวข้องกับการสร้างสภาพแวดล้อมวิธีการติดตั้งแพ็กเกจในโหมดแบตช์
Amar

7
ควรsource venv/bin/activateหรือไม่?
Keith

18

สำหรับผู้ใช้ Windows10

ฉันใช้ python3.4 บน Windows10 ฉันติดตั้ง python3.5 ฉันไม่พบตัวแปร PYTHONPATH, PYTHONHOME env ถ้าฉันสั่ง python ในคอนโซล CMD มันจะยังคงใช้ python3.4 ฉันลบ python3.4 เมื่อใดก็ตามที่ฉันสั่ง python ในคอนโซล CMD มันจะเริ่มแสดงข้อผิดพลาดดังต่อไปนี้

Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named 'encodings'

ฉันค้นหาเพื่อหาปัญหาของฉัน วิธีแก้ปัญหานั้นง่ายมาก เมื่อคุณติดตั้ง python3.5 คุณสามารถติดตั้งและตรวจสอบเองได้เพิ่ม Python ให้กับตัวแปรสภาพแวดล้อมในตัวเลือกขั้นสูง

ฉันขอฝากไว้ที่นี่เผื่อว่ามีคนมีปัญหาคล้าย ๆ กันแวะมาที่นี่เพื่อที่พวกเขาจะได้ไม่เสียเวลาอันมีค่าไปมากนัก


เพียงเพื่อเพิ่มประสบการณ์ของฉันในสิ่งนี้ - หากคุณเคยติดตั้ง Python เวอร์ชันอื่นและสร้าง env แล้วให้ถอนการติดตั้ง Python ไปที่ที่ติดตั้งและลบออกจากนั้นไปและลบการอ้างอิงถึง python ออกจากเส้นทางจากนั้น ไปที่ C: \ Users \% USERNAME% \ และลบ. virtualenvs จากนั้นติดตั้ง Python เวอร์ชันที่คุณต้องการใช้เพิ่มในเส้นทาง
Kelly Bang

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 ให้กับตัวแปรสภาพแวดล้อมในตัวเลือกขั้นสูง" ขณะติดตั้ง python 3.6 ปรากฏว่าตัวแปรสภาพแวดล้อม " PYTHONHOME " และ " PYTHONPATH " ยังคงเป็น python2.7

ในที่สุดฉันก็แก้ไขได้โดยแก้ไข " PYTHONHOME " เป็นpython3.6 install path และลบตัวแปร " 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. จากนั้นเปิดคุณสมบัติของระบบและไปที่แท็บ " ขั้นสูง " (หรือคุณสามารถทำได้ง่ายๆ: ไปที่เริ่ม> ค้นหา " ตัวแปรสภาพแวดล้อม "> คลิกที่ "แก้ไขตัวแปรสภาพแวดล้อมระบบ") ภายใต้แท็บ "ขั้นสูง" ให้มองหา "Environment Variables" แล้วคลิกมัน หน้าต่างอื่นที่มีชื่อ "ตัวแปรสภาพแวดล้อม" จะปรากฏขึ้น

  3. ตอนนี้ตรวจสอบให้แน่ใจว่าตัวแปรผู้ใช้ของคุณมีเส้นทาง Python ที่ถูกต้องซึ่งแสดงรายการใน "Path Variable" ในตัวอย่างของฉันที่นี่คุณจะเห็นC: \ Program Files หากคุณไม่พบที่นั่นให้เพิ่มโดยเลือกฟิลด์ตัวแปรเส้นทางแล้วคลิกแก้ไข

  4. ขั้นตอนสุดท้ายคือตรวจสอบฟิลด์ PYTHONHOMEและPYTHONPATH อีกครั้งภายใต้ตัวแปรระบบในหน้าต่างเดียวกัน คุณควรเห็นเส้นทางเดียวกันกับที่อธิบายไว้ข้างต้น ถ้าไม่เพิ่มก็มี

จากนั้นคลิกตกลงและกลับไปที่เทอร์มินัล CMD แล้วลองตรวจหา python ตอนนี้ปัญหาควรได้รับการแก้ไข มันได้ผลสำหรับฉัน


สิ่งนี้เหมือนกันทุกประการใน win10 ในกรณีของฉันมันเป็นเพียง PYTHONHOME และ PYTHONPATH ที่ถูกตั้งค่าเป็นการติดตั้งรุ่นเก่า
Andrés Marafioti

@dotpy_novice คุณช่วยเน้นรายละเอียดขั้นตอนที่ 4 ได้ไหม ฉันไม่มีเส้นทางใด ๆ ที่แสดงอยู่ในตัวแปรผู้ใช้ของฉันและฉันได้เพิ่มตามที่คุณพูดในขั้นตอนที่ 3 ตอนนี้ฉันลังเลเล็กน้อยที่จะดำเนินการต่อ ไม่มีPYTHONHOMEและPYTHONPATHในตัวแปรระบบ ฉันควรสร้างด้วยตัวเองหรือไม่ถ้าใช่ฉันควรแทรกชื่อตัวแปรและค่าตัวแปรอย่างไร
bit_scientist

8

ฉันมีข้อผิดพลาดนี้ระหว่างการย้ายไปยัง Ubuntu 17.10 และสิ่งนี้ช่วยแก้ปัญหาได้:

sudo dpkg-reconfigure python3

บางทีคุณอาจต้องปิดเซสชันและเชื่อมต่อใหม่


ฉันมี 16.04 สิ่งนี้ไม่สามารถแก้ปัญหาของฉันได้ ฉันแค่พยายามเข้าใจว่าทำไมสิ่งนี้จึงเกิดขึ้น
Savitoj Cheema

ปัญหาเดียวกันบน ubuntu 16.4 .. ฉันควรติดตั้ง Ubuntu ใหม่หรือไม่? /usr/sbin/dpkg-reconfigure: python3 ist kaputt oder nicht komplett installiert
Timo

บน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'

คงที่เช่นนี้ - /ubuntu/907035/importerror-cannot-import-name-remove-dead-weakref

cd my-virtualenv-directory
virtualenv . --system-site-packages

1

มีปัญหาเดียวกันเมื่ออัปเดต mac ของฉันเป็น macOS Catalina ขณะใช้งานpipenv. Pipenv สร้างและจัดการ a virtualenvให้กับคุณดังนั้นคำแนะนำก่อนหน้านี้จาก @ Anoop-Malav จึงเหมือนกันเพียงแค่ใช้ pipenv เพื่อลบสภาพแวดล้อมเสมือนตาม dir ปัจจุบันและรีเซ็ต:

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

สิ่งนี้ใช้ได้ผลสำหรับฉัน แต่ฉันยังไม่เข้าใจว่าทำไม กรุณาอธิบายที่มาของข้อผิดพลาดขอบคุณ
ลาบันขี้ขลาด

1

ฉันประสบปัญหานี้ "ModuleNotFoundError: ไม่มีโมดูลชื่อ" การเข้ารหัส "หลังจากอัปเดตเป็น macOS Catalina

ฉันติดตั้ง Python หลายเวอร์ชันในระบบของฉัน

การลบเวอร์ชัน python ทั้งหมด (2.7 และ 3.7.4) ออกจากระบบ macOS และการติดตั้ง python 3.8 ล่าสุดใช้งานได้สำหรับฉัน

ในการลบ python ออกจาก macOS ฉันได้ทำตามคำแนะนำจากที่นี่จะถอนการติดตั้ง Python 2.7 บน MacOS X 10.6.4 ได้อย่างไร

ลิงก์ด้านบนใช้สำหรับ python 2.7 และคุณสามารถใช้เช่นเดียวกันกับ 3.7 ได้เช่นกัน


0

ฉันมีปัญหาที่คล้ายกัน ฉันติดตั้งทั้งอนาคอนดาและงูหลามในคอมพิวเตอร์และการอ้างอิงหลามของฉันมาจากไดเรกทอรี Anaconda เมื่อฉันถอนการติดตั้ง Anaconda ข้อผิดพลาดนี้เริ่มปรากฏขึ้น ฉันเพิ่มPYTHONPATHแต่มันก็ยังไม่ไป ฉันตรวจสอบpython -versionและไปรู้ว่ามันยังคงใช้เส้นทางอนาคอนด้าอยู่ ฉันต้องลบไดเรกทอรี Anaconda3 ด้วยตนเองและหลังจากนั้น python ก็เริ่มรับการอ้างอิงจากPYTHONPATHไฟล์.
แก้ไขปัญหาแล้ว!


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 โปรดระบุขั้นตอนในการ 'คุก' pythonx.y ได้ไหม?
Pranav

@Pranav ฉันใช้สคริปต์นี้: gist.github.com/williamhaley/5a499cd7c83aa0e01eaf จากนั้นคุณสามารถเรียกใช้ copy_binary pythonXY ได้แล้วค้นหาไลบรารีภายใต้รูทจริงของคุณ /usr/lib/pythonX.Y โดยที่ XY เป็นเวอร์ชันหลามของคุณ (สำหรับ ตัวอย่าง python3.7) คัดลอกไปที่คุก / usr / lib / ของคุณและคุณก็พร้อมแล้ว ไชโย
Matt

-2

เพียงไปที่ File -> Settings -> เลือก Project Interpreter ภายใต้แท็บ Project -> คลิกที่ไอคอนรูปเฟืองขนาดเล็ก -> Add -> System Interpreter -> เลือกเวอร์ชัน python ที่คุณต้องการในเมนูแบบเลื่อนลง

สิ่งนี้ดูเหมือนจะใช้ได้ผลสำหรับฉัน


นี่ไม่ใช่ปัญหาของเขา
NotSoShabby

-13

ฉันยังสามารถแก้ไขได้ PYTHONPATH และ PYTHONHOME เป็นสาเหตุ

เรียกใช้สิ่งนี้ในเทอร์มินัล

   touch ~/.bash_profile
   open ~/.bash_profile

จากนั้นลบส่วนที่ไร้ประโยชน์ทั้งหมดของไฟล์นี้และบันทึก ไม่รู้ว่าแนะนำให้ทำยังไง!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.