ImportError: Không có mô-đun nào có tên 'mã hóa'


106

Gần đây tôi đã cài đặt lại ubuntu và đã nâng cấp lên 16.04 và không thể sử dụng 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

Tại thời điểm này, bản thân python không hoạt động

$ 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

Ngay cả đề xuất này không còn hoạt động nữa:

unset PYTHONHOME
unset PYTHONPATH

Mỗi khi tôi sửa nó một cách, nó lại quay trở lại. Một số câu trả lời giúp khắc phục nó tạm thời, nhưng không tốt. Tôi đã cài đặt lại python và python3 nhiều lần. Tôi có thể làm gì từ đây? Cảm ơn bạn


Điều này có liên quan đến Django hay chỉ Python? Bạn có thể muốn chỉnh sửa câu hỏi của mình bằng thẻ thích hợp.
Moses Koledoye

2
chỉ python, tôi tình cờ được sử dụng django
codyc4321

Có vẻ như quá trình cài đặt python chưa hoàn tất. Bạn đã cài đặt python qua apt hay bạn đã biên dịch và cài đặt nó từ nguồn chưa? Chạy which pythonđể kiểm tra xem bạn có tệp nhị phân python nào đầu tiên trong $ PATH.
HAL

Bạn đã thử gỡ cài đặt và cài đặt lại cả python2 và python3 aptchưa?

Tôi đã gặp phải vấn đề này bằng cách sử dụng ngăn xếp Bitnami Django khi cố gắng chuyển pip3 install -r suggest.txt vào một env ảo. Nó hoạt động tốt mà không cần sử dụng env ảo. Tôi đã không mất thời gian để tìm ra lý do tại sao đây là một vấn đề.
Brad Rhoads

Câu trả lời:


87

Đối với Python-3, hãy thử xóa các tệp môi trường ảo. Và thiết lập lại nó.

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 chỉnh sửa fo


2
Tuyệt quá! Cảm ơn bạn đã hướng dẫn tôi cách cài đặt python3 thành env bằng virtualenvlệnh! Không hiểu sao tôi phải mất khoảng 2 tháng mới tìm được. Amazing ...
MadPhysicist

2
Xin chào, tôi đã thử thực hiện việc này trên thiết bị Amazon AMI của mình (dựa trên RHEL) nhưng nó không hoạt động. Bất kỳ cách nào khác nó có thể được giải quyết?
Divij Sehgal

1
khi tôi bước vào một lệnh cuối cùng nó mang lại cho tôi dưới đây lỗi bạn có thể vui lòng giải quyết ... Không thể mở tập tin yêu cầu: [Errno 2] Không có tập tin hoặc thư mục: 'requirements.txt'
Deepak Chawla

1
@DeepakChawla Request.txt phải có trong pwd nơi bạn đang phát hành lệnh này và nó không liên quan gì đến việc tạo môi trường, đây là một cách để cài đặt các gói ở chế độ hàng loạt.
Amar

7
Có nên không source venv/bin/activate?
Keith

16

Đối với người dùng Windows10.

Tôi đang sử dụng python3.4 trên Windows10. Tôi đã cài đặt python3.5. Tôi không thể tìm thấy biến env PYTHONPATH, PYTHONHOME. Nếu tôi ra lệnh python trong bảng điều khiển CMD, nó tiếp tục sử dụng python3.4. Tôi đã xóa python3.4. Bất cứ khi nào tôi lệnh python trong bảng điều khiển CMD, nó bắt đầu hiển thị lỗi như bên dưới.

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

Tôi đã tìm kiếm để tìm ra vấn đề của mình. Giải pháp rất đơn giản. Khi bạn cài đặt python3.5, bạn có thể tùy chỉnh cài đặt và kiểm tra Thêm Python vào biến môi trường trong Tùy chọn nâng cao.

Tôi chỉ để ở đây phòng trường hợp ai đó có vấn đề tương tự hãy truy cập vào đây để họ không lãng phí thời gian quý báu của mình để tìm hiểu.


11

Tôi đã gặp phải vấn đề tương tự trong Windows7. Thông báo lỗi có dạng như sau:

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

Current thread 0x000011f4 (most recent call first):

Tôi đã cài đặt python 2.7 (đã gỡ cài đặt ngay bây giờ) và tôi đã kiểm tra "Thêm Python vào biến môi trường trong Tùy chọn nâng cao" trong khi cài đặt python 3.6. Kết quả là Biến môi trường " PYTHONHOME " và " PYTHONPATH " vẫn là python2.7.

Cuối cùng tôi đã giải quyết nó bằng cách sửa đổi " PYTHONHOME " thành đường dẫn cài đặt python3.6 và loại bỏ biến " PYTHONPATH ".


9

Đối với vấn đề tương tự trên Windows7

Bạn sẽ thấy lỗi như thế này nếu biến môi trường / biến hệ thống của bạn được đặt không chính xác:

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

Current thread 0x00001db4 (most recent call first):

Khắc phục điều này thực sự đơn giản:

  1. Khi bạn tải xuống phiên bản Python3.x và chạy tệp .exe, nó sẽ cung cấp cho bạn một tùy chọn để tùy chỉnh vị trí bạn muốn cài đặt Python trong hệ thống của mình. Ví dụ, tôi đã chọn vị trí này: C: \ Program Files \ Python36

  2. Sau đó, mở thuộc tính hệ thống và chuyển đến tab " Nâng cao " (Hoặc bạn có thể làm đơn giản như sau: Đi tới Bắt đầu> Tìm kiếm " biến môi trường "> Nhấp vào "Chỉnh sửa biến môi trường hệ thống".) Trong tab "Nâng cao", hãy tìm "Biến môi trường" và nhấp vào nó. Một cửa sổ khác có tên "Biến môi trường" sẽ bật lên.

  3. Bây giờ hãy đảm bảo rằng các biến người dùng của bạn có đường dẫn Python chính xác được liệt kê trong "Biến đường dẫn". Trong ví dụ của tôi ở đây, bạn sẽ thấy C: \ Program Files \ Python36 . Nếu bạn không tìm thấy nó ở đó, hãy thêm nó, bằng cách chọn trường Biến đường dẫn và nhấp vào Chỉnh sửa.

  4. Bước cuối cùng là kiểm tra kỹ các trường PYTHONHOMEPYTHONPATH trong Biến hệ thống trong cùng một cửa sổ. Bạn sẽ thấy đường dẫn tương tự như mô tả ở trên. Nếu không thêm nó vào đó quá.

Sau đó nhấp vào OK và quay lại thiết bị đầu cuối CMD và thử kiểm tra python. Vấn đề bây giờ sẽ được giải quyết. Nó đã làm việc cho tôi.


Điều này hoàn toàn tương tự trên win10. Trong trường hợp của tôi, đó chỉ là PYTHONHOME và PYTHONPATH được đặt thành cài đặt cũ hơn.
Andrés Marafioti,

@dotpy_novice Bạn có thể vui lòng đánh dấu chi tiết bước 4 được không? Tôi không có bất kỳ đường dẫn nào được liệt kê trong các biến người dùng của mình và tôi đã thêm như bạn đã nói ở bước 3. Bây giờ tôi hơi do dự khi tiếp tục. Không có PYTHONHOMEPYTHONPATH trong biến Hệ thống. Tôi có nên tự tạo chúng không, nếu có, tôi nên chèn gì cho Tên biếnGiá trị biến ?
bit_scientist

6

Tôi đã gặp lỗi này khi di chuyển sang Ubuntu 17.10 và điều này đã giải quyết được sự cố:

sudo dpkg-reconfigure python3

Có thể bạn sẽ phải đóng phiên của mình và kết nối lại.


Tôi có 16.04, điều này không giải quyết được vấn đề của tôi. Tôi chỉ cố gắng tìm hiểu, tại sao điều này xảy ra
Xavitoj Cheema

Vấn đề tương tự trên ubuntu 16.4 .. Tôi có nên cài đặt lại Ubuntu không? /usr/sbin/dpkg-reconfigure: python3 ist kaputt oder nicht komplett installiert
Timo

Bật 18.04 Lubuntu, nó nóiFatal Python error: Py_Initialize: Unable to get the locale encoding
Timo

1

Nhìn vào /lib/python3.5 và bạn sẽ thấy các liên kết bị hỏng đến thư viện python. Tạo lại nó vào thư mục làm việc.

Lỗi tiếp theo -

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

đã sửa như thế này - /ubuntu/907035/importerror-cannot-import-name-remove-dead-weakref

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

1

Tôi đã gặp phải sự cố này "ModuleNotFoundError: Không có mô-đun nào có tên 'mã hóa" sau khi cập nhật lên macOS Catalina.

Tôi đã cài đặt nhiều phiên bản Python trong hệ thống của mình.

Xóa tất cả các phiên bản python (2.7 và 3.7.4) khỏi hệ thống macOS và cài đặt lại python 3.8 mới nhất đã làm việc với tôi.

Để xóa python khỏi macOS, tôi đã làm theo hướng dẫn từ đây Làm thế nào để gỡ cài đặt Python 2.7 trên Mac OS X 10.6.4?

Liên kết trên dành cho python 2.7 và bạn cũng có thể sử dụng tương tự cho 3.7.


0

Tôi đã có một vấn đề tương tự. Tôi đã cài đặt cả anaconda và python trên máy tính của mình và các phụ thuộc python của tôi là từ thư mục Anaconda. Khi tôi gỡ cài đặt Anaconda, lỗi này bắt đầu xuất hiện. Tôi đã thêm PYTHONPATHnhưng nó vẫn không đi. Tôi đã kiểm tra với python -versionvà đi để biết rằng nó vẫn đang đi theo con đường anaconda. Tôi đã phải xóa thủ công thư mục Anaconda3 và sau đó python bắt đầu lấy các phụ thuộc từ PYTHONPATH.
Vấn đề đã được giải quyết!


0

Gặp sự cố tương tự khi cập nhật mac của tôi lên macOS Catalina trong khi sử dụng pipenv. Pipenv tạo và quản lý một virtualenvcho bạn, do đó, đề xuất trước đó từ @ Anoop-Malav là giống nhau, chỉ cần sử dụng pipenv để xóa môi trường ảo dựa trên dir hiện tại và đặt lại nó:

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

0

Trong trường hợp của tôi, chỉ cần thay đổi quyền của thư mục anaconda đã hoạt động:

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

-1

Vì đây là kết quả đầu tiên trên google nên tôi chỉ muốn thêm thông tin sau cho bất kỳ ai khác gặp vấn đề với nhà tù:

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)

Khi cố gắng nhập python vào máy giam của mình, bạn cần phải liên kết các phần phụ thuộc và /usr/lib/pythonX.Y với [JAIL] / usr / lib /. Hi vọng điêu nay co ich.


Kính gửi @matt, bạn có thể vui lòng cung cấp các bước để 'bỏ tù' pythonx.y không?
Pranav

@Pranav Tôi đang sử dụng kịch bản này: gist.github.com/williamhaley/5a499cd7c83aa0e01eaf sau đó bạn có thể chạy copy_binary pythonX.Y sau đó tìm các thư viện dưới gốc thực sự của bạn /usr/lib/pythonX.Y nơi XY là phiên bản python của bạn (Ví ví dụ python3.7). Sao chép chúng vào jails / usr / lib / của bạn và bạn đã sẵn sàng. Cheers
Matt

-2

Chỉ cần vào Tệp -> Cài đặt -> chọn Trình thông dịch dự án trong tab Dự án -> nhấp vào biểu tượng bánh răng nhỏ -> Thêm -> Trình thông dịch hệ thống -> chọn phiên bản python bạn muốn trong menu thả xuống

điều này dường như hiệu quả với tôi


đây không phải là vấn đề của mình
NotSoShabby

-12

Tôi cũng có thể sửa lỗi này. Nguyên nhân là do PYTHONPATH và PYTHONHOME.

chạy điều này trong một thiết bị đầu cuối

   touch ~/.bash_profile
   open ~/.bash_profile

và sau đó xóa tất cả các phần vô dụng của tệp này và lưu. Tôi không biết làm thế nào nó được khuyến khích để làm điều đó!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.