Fatal python error py initialize

Fatal python error py initialize

Итак, в этой статье мы увидим, как мы можем решить фатальную ошибку python: py_initialize: не удается загрузить кодек файловой системы. Но перед этим мы посмотрим некоторые примеры кода и попытаемся выяснить, почему произошла ошибка. Итак, давайте начнем.

 

Пример кода

 

#include <Python.h>

 

int main (int, char**)

{

  Py_Initialize ();

  Py_Finalize ();

  return 0;

}

 

Вывод:

 

Fatal Python error: Py_Initialize: unable to load the file system codec

LookupError: no codec search functions registered: can’t find encoding

 

Итак, поскольку возникла ошибка, мы можем сказать, что проблема заключается в инициализации Python в нашей программе. Компилятору C / C ++ не удается загрузить файл системного кодека для Python. Файл кодека отвечает за кодирование и декодирование нашей программы на python, и если компилятору это не удается, возникает данная ошибка. Теперь может быть несколько причин возникновения ошибки. Некоторые из них обсуждаются ниже:

 

  • Системе не удается найти python, поскольку он недоступен в системных / переменных среды.
  • Может быть доступно более одной версии python.
  • Python неправильно установлен в системе.

 

Решение: изменение пути Python в переменных среды

 

Теперь, во всех вышеуказанных случаях, решение заключается в том, что вам нужно правильно установить Python и правильно указать путь к Python в системных / переменных среды. Для этого выполните следующие действия:

 

[ Для Windows 10]

 

Откройте систему, щелкнув правой кнопкой мыши на значке Windows.

Найдите env в строке поиска и выберите “Редактировать переменные системного окружения”.

Если для python существует какой-либо путь, вы можете удалить их, щелкнув путь, а затем выбрав удалить.

В противном случае выберите path и нажмите “Создать”, чтобы добавить “PythonPath” в системные переменные.

Таким образом, вы можете добавить путь python к переменным среды.

 

Исправление ошибки в Ubuntu или Debian

 

Вы также можете получить ошибку при работе с Debian или ubuntu. Причина, упомянутая выше, также следует и здесь. Однако решение для устранения проблемы в этом случае довольно простое. Вам нужно открыть терминал и выполнить следующую команду.

 

$ export PYTHONHOME=/usr/local/lib/python3.5/

$ export PYTHONPATH=/usr/local/lib/python3.5/

 

Исправление ошибки в macOS

 

Однако причина ошибки остается той же и для macOS, т. Е. Система не может найти Python, поскольку он недоступен в системных / переменных среды, или может быть доступно более одной версии python. Однако в macOS решение немного отличается от ОС Windows. В macOS вам нужно найти файл .bashrc или .bash_profile . В этот файл вы должны добавить следующую команду.

 

export PYTHONHOME=”/Users/<user>/python3/”

export PYTHONPATH=”${PYTHONHOME}/bin”

 

После завершения вы можете использовать следующую команду для установки переменных.

source .bashrc

 

Py_Initialize fails – unable to load the file system codec

 

Я пытаюсь собрать простой тестовый проект на c ++, который использует встроенный интерпретатор python 3.2. Проект строится нормально, но Py_Initialize выдает фатальную ошибку:

 

              Fatal Python error: Py_Initialize: unable to load the file system codec

              LookupError: no codec search functions registered: can’t

 

Минимальный код:

 

              #include <Python.h>

 

              int main (int, char**)

              {

                Py_Initialize ();

                Py_Finalize ();

                0;

              }

 

ОС – 32-разрядная Vista.

 

Используемая версия python – это отладочная сборка python 3.2, созданная из исходных текстов с использованием VC ++ 10.

 

python_d.exe файл из той же сборки запускается без каких-либо проблем.

 

Может кто-нибудь объяснить проблему и как ее исправить? Мой собственный google-fu меня подводит.

 

Ответ

 

Основная причина довольно проста: Python не находит свой каталог modules, поэтому он, конечноencodings, тоже не может загружаться

 

В документе Python о внедрении говорится: “Py_Initialize() вычисляет путь поиска модуля на основе его наилучшего предположения” … “В частности, он ищет каталог с именем lib/pythonX.Y”

 

Тем не менее, если модули установлены в (только) lib- относительно двоичного файла python – приведенное выше предположение неверно.

 

Хотя в документах говорится, что PYTHONHOMEи PYTHONPATHрассматриваются, мы заметили, что это не так; их фактическое присутствие или содержимое совершенно не имеет значения.

 

Единственное, что имело эффект, это вызов Py_SetPath()with, например[path-to]\lib, в качестве аргумента раньше Py_Initialize().

 

Конечно, это только вариант для сценария внедрения, в котором у пользователя есть прямой доступ и контроль над кодом; с готовым решением могут потребоваться специальные шаги для решения проблемы.

 

 

 

Наталья Петрова
Оцените автора
Новости города Салавата
Добавить комментарий

Adblock
detector