ImportError: Tidak ada modul bernama 'encodings'

106

Saya baru-baru ini menginstal ulang ubuntu dan melakukan peningkatan ke 16.04 dan tidak dapat menggunakan 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

Pada titik ini, python sendiri tidak berfungsi

$ 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

Bahkan saran ini tidak lagi berfungsi:

unset PYTHONHOME
unset PYTHONPATH

Setiap saya memperbaikinya dengan satu cara, itu kembali lagi. Beberapa jawaban membantu memperbaikinya untuk sementara, tetapi tidak untuk selamanya. Saya telah menginstal ulang python dan python3 beberapa kali. Apa yang dapat saya lakukan dari sini? Terima kasih

codyc4321.dll
sumber
Apakah ini terkait dengan Django atau hanya Python? Anda mungkin ingin mengedit pertanyaan Anda dengan tag yang sesuai.
Moses Koledoye
2
hanya python, saya kebetulan menggunakan django
codyc4321
Sepertinya penginstalan python belum selesai. Sudahkah Anda menginstal python melalui apt atau sudahkah Anda mengkompilasi dan menginstalnya dari sumber? Jalankan which pythonuntuk memeriksa biner python mana yang Anda miliki pertama kali di $ PATH.
HAL
Sudahkah Anda mencoba menghapus dan menginstal ulang python2 dan python3 via apt?
Saya mengalami ini menggunakan tumpukan Bitnami Django ketika mencoba pip3 install -r Requirement.txt int virtual env. Ini bekerja dengan baik tanpa menggunakan virtual env. Saya belum meluangkan waktu untuk mencari tahu mengapa ini menjadi masalah.
Brad Rhoads

Jawaban:

88

Untuk Python-3 coba hapus file lingkungan virtual. Dan mengatur ulangnya.

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 edit untuk

Anoop Malav
sumber
2
Bagus! Terima kasih telah mengajari saya cara menginstal python3 ke env menggunakan virtualenvperintah! Untuk beberapa alasan, butuh waktu sekitar 2 bulan untuk menemukannya. Luar biasa ...
MadPhysicist
2
Hai, saya mencoba melakukan ini di perangkat Amazon AMI saya (berdasarkan RHEL) tetapi tidak berhasil. Adakah cara lain untuk menyelesaikannya?
Divij Sehgal
1
ketika saya memasukkan perintah terakhir itu memberi saya kesalahan di bawah ini, bisakah Anda menyelesaikannya ... Tidak dapat membuka file persyaratan: [Errno 2] Tidak ada file atau direktori seperti itu: 'requirement.txt'
Deepak Chawla
1
Persyaratan @DeepakChawla.txt harus ada di pwd dari mana Anda mengeluarkan perintah ini dan tidak ada hubungannya dengan menciptakan lingkungan, ini cara untuk menginstal paket dalam mode batch.
Amar
7
Bukankah seharusnya begitu source venv/bin/activate?
Keith
16

Untuk Pengguna Windows10.

Saya menggunakan python3.4 di Windows10. Saya telah menginstal python3.5. Saya tidak bisa menemukan variabel env PYTHONPATH, PYTHONHOME. Jika saya perintah python di konsol CMD, Itu tetap menggunakan python3.4. Saya menghapus python3.4. Setiap kali saya memerintahkan python di konsol CMD, itu mulai menunjukkan kesalahan seperti di bawah ini.

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

Saya mencari untuk mencari tahu masalah saya. Solusinya sederhana. Saat Anda menginstal python3.5, Anda dapat menginstal kustom dan memeriksa Tambahkan Python ke variabel lingkungan di Opsi Lanjutan.

Saya hanya pergi dari sini untuk berjaga-jaga jika seseorang memiliki masalah serupa berkunjung ke sini sehingga mereka tidak membuang banyak waktu berharga mereka untuk mencari tahu.

Jayground
sumber
11

Saya menghadapi masalah yang sama di bawah Windows7. Pesan kesalahannya terlihat seperti itu:

Fatal Python error: Py_Initialize: unable to load the file system codec
ModuleNotFoundError: No module named 'encodings'

Current thread 0x000011f4 (most recent call first):

Saya telah menginstal python 2.7 (dihapus sekarang), dan saya mencentang "Tambahkan Python ke variabel lingkungan di Opsi Lanjutan" saat menginstal python 3.6. Ternyata Variabel Lingkungan " PYTHONHOME " dan " PYTHONPATH " masih python2.7.

Akhirnya saya menyelesaikannya dengan memodifikasi " PYTHONHOME " menjadi jalur instalasi python3.6 dan menghapus variabel " PYTHONPATH ".

Li Qiao
sumber
9

Untuk masalah yang sama di Windows7

Anda akan melihat kesalahan seperti ini jika variabel lingkungan / variabel sistem Anda tidak disetel dengan benar:

Fatal Python error: Py_Initialize: unable to load the file system codec
ImportError: No module named 'encodings'

Current thread 0x00001db4 (most recent call first):

Memperbaiki ini sangat sederhana:

  1. Saat Anda mengunduh versi Python3.x, dan menjalankan file .exe, ini memberi Anda opsi untuk menyesuaikan di mana di sistem Anda Anda ingin menginstal Python. Misalnya, saya memilih lokasi ini: C: \ Program Files \ Python36

  2. Kemudian buka properti sistem dan buka tab " Lanjutan " (Atau Anda dapat melakukannya: Buka Mulai> Cari " variabel lingkungan "> Klik "Edit variabel lingkungan sistem".) Di bawah tab "Lanjutan", cari "Variabel Lingkungan" dan klik. Jendela lain dengan nama "Variabel Lingkungan" akan muncul.

  3. Sekarang pastikan variabel pengguna Anda memiliki jalur Python yang benar yang tercantum di "Variabel Jalur". Dalam contoh saya di sini, Anda akan melihat C: \ Program Files \ Python36 . Jika Anda tidak menemukannya di sana, tambahkan dengan memilih bidang Variabel Jalur dan klik Edit.

  4. Langkah terakhir adalah memeriksa ulang bidang PYTHONHOME dan PYTHONPATH di bawah Variabel Sistem di jendela yang sama. Anda akan melihat jalur yang sama seperti yang dijelaskan di atas. Jika tidak, tambahkan juga di sana.

Kemudian klik OK dan kembali ke terminal CMD, dan coba periksa python. Masalahnya sekarang harus diselesaikan. Itu berhasil untuk saya.

dotpy_novice
sumber
Ini persis sama di win10. Dalam kasus saya, itu hanya PYTHONHOME dan PYTHONPATH yang disetel ke pemasangan yang lebih lama.
Andrés Marafioti
@dotpy_novice Bisakah Anda menyoroti langkah 4 secara rinci? Saya tidak memiliki jalur apa pun yang tercantum dalam variabel pengguna saya dan saya menambahkan seperti yang Anda katakan pada langkah 3. Sekarang saya agak ragu untuk melanjutkan. Tidak ada PYTHONHOME dan PYTHONPATH dalam variabel Sistem. Haruskah saya membuatnya sendiri, jika ya, apa yang harus saya masukkan untuk nama Variabel dan nilai Variabel ?
bit_scientist
6

Saya mengalami kesalahan ini selama migrasi ke Ubuntu 17.10, dan ini menyelesaikan masalah:

sudo dpkg-reconfigure python3

Mungkin Anda harus menutup sesi Anda dan terhubung kembali.

numahell
sumber
Saya memiliki 16,04, ini tidak menyelesaikan masalah saya. Saya hanya mencoba untuk memahami, mengapa ini terjadi
Xavitoj Cheema
Masalah yang sama di ubuntu 16.4 .. Haruskah saya menginstal ulang Ubuntu? /usr/sbin/dpkg-reconfigure: python3 ist kaputt oder nicht komplett installiert
Timo
Aktif 18.04 Lubuntu, tertulisFatal Python error: Py_Initialize: Unable to get the locale encoding
Timo
1

Lihat /lib/python3.5 dan Anda akan melihat tautan rusak ke pustaka python. Buat kembali ke direktori kerja.

Kesalahan berikutnya -

./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'

diperbaiki seperti ini - /ubuntu/907035/importerror-cannot-import-name-remove-dead-weakref

cd my-virtualenv-directory
virtualenv . --system-site-packages
IvanTheFirst
sumber
1

Saya menghadapi masalah ini "ModuleNotFoundError: Tidak ada modul bernama 'encodings" setelah memperbarui ke macOS Catalina.

Saya menginstal beberapa versi Python di sistem saya.

Menghapus semua versi python (2.7 dan 3.7.4) dari sistem macOS dan menginstal ulang python 3.8 terbaru berhasil untuk saya.

Untuk menghapus python dari macOS, saya telah mengikuti instruksi dari sini Bagaimana cara menghapus Python 2.7 di Mac OS X 10.6.4?

Tautan di atas adalah untuk python 2.7 dan tetapi Anda dapat menggunakan yang sama untuk 3.7 juga.

Kondal Kolipaka
sumber
0

Saya memiliki masalah serupa. Saya memasang anaconda dan python di komputer saya dan dependensi python saya berasal dari direktori Anaconda. Ketika saya menghapus Anaconda, kesalahan ini mulai muncul. Saya menambahkan PYTHONPATHtetapi masih tidak pergi. Aku memeriksa dengan python -versiondan pergi untuk mengetahui bahwa itu masih mengambil jalan anaconda. Saya harus secara manual menghapus direktori Anaconda3 dan setelah itu python mulai mengambil dependensi dari PYTHONPATH.
Masalah Terselesaikan!

Satyam Gaba
sumber
0

Memiliki masalah yang sama saat memperbarui mac saya ke macOS Catalina, saat menggunakan pipenv. Pipenv membuat dan mengelola virtualenvuntuk Anda, jadi saran sebelumnya dari @ Anoop-Malav sama, hanya menggunakan pipenv untuk menghapus lingkungan virtual berdasarkan direktori saat ini dan menyetel ulang:

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

Dalam kasus saya, hanya mengubah izin folder anaconda berfungsi:

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

Karena ini adalah hasil pertama di google, saya hanya ingin menambahkan informasi berikut untuk siapa pun yang mengalami masalah dengan penjara:

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)

Saat mencoba mengimpor python ke jail Anda, Anda berdua perlu menghubungkan dependensi dan /usr/lib/pythonX.Y ke [JAIL] / usr / lib /. Semoga ini membantu.

Matt
sumber
Dear @matt, bisakah kamu memberikan langkah-langkah untuk 'jail' pythonx.y?
Pranav
@Pranav Saya menggunakan skrip ini: gist.github.com/williamhaley/5a499cd7c83aa0e01eaf Anda kemudian dapat menjalankan copy_binary pythonX.Y kemudian menemukan perpustakaan di bawah root /usr/lib/pythonX.Y asli Anda di mana XY adalah versi python Anda (Untuk contoh python3.7). Salin mereka ke penjara Anda / usr / lib / dan Anda sudah siap. Cheers
Matt
-2

Masuk saja ke File -> Settings -> pilih Project Interpreter di bawah tab Project -> klik ikon roda gigi kecil -> Add -> System Interpreter -> pilih versi python yang Anda inginkan di menu drop down

ini sepertinya berhasil untuk saya

Balu B
sumber
ini bukan masalahnya
NotSoShabby
-12

Saya juga bisa memperbaiki ini. PYTHONPATH dan PYTHONHOME menjadi penyebabnya.

jalankan ini di terminal

   touch ~/.bash_profile
   open ~/.bash_profile

dan kemudian hapus semua bagian yang tidak berguna dari file ini, dan simpan. Saya tidak tahu seberapa direkomendasikan untuk melakukan itu!

Pber6154
sumber