Ошибка Py_Initialize - невозможно загрузить кодек файловой системы - PullRequest
56 голосов
/ 17 апреля 2011

Я пытаюсь собрать простой тестовый проект 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 find encoding

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

#include <Python.h>

int main (int, char**)
{
  Py_Initialize ();
  Py_Finalize ();
  return 0;
}

Операционная система - 32-битная Vista.

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

Файл python_d.exe из той же сборки работает без проблем.

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

РЕДАКТИРОВАТЬ 1

После просмотра исходного кода python я обнаружил, что, как говорится в сообщении об ошибке, функции поиска кодеков нетбыли зарегистрированы.И codec_register, и PyCodec_Register такие, какими они должны быть.Просто нигде в коде ни одна из этих функций не называется.

Я действительно не знаю, что это значит, так как до сих пор не знаю, когда и откуда эти функции должны были быть вызваны.Код, который вызывает ошибку, полностью отсутствует в источнике моей другой сборки Python (3.1.3).

EDIT 2

Ответил на мой собственный вопрос ниже.

Ответы [ 13 ]

2 голосов
/ 10 августа 2017

У меня была проблема, и я возился с различными решениями, упомянутыми здесь.Поскольку я запускал свой проект из Visual Studio, по-видимому, мне нужно было указать путь к среде внутри Visual Studio, а не системный путь.

Добавление простого PYTHONHOME = PATH \ TO \ PYTHON \ DIR в решение проекта\ properties \ environment решил проблему.

2 голосов
/ 18 апреля 2011

Итак, по какой-то причине DLL-библиотека Python не может найти модуль кодировок. Исполняемый файл python.exe, очевидно, находит его, потому что он имеет ожидаемый относительный путь. Модификация пути поиска работает.

причина всего этого? Не знаю, но, по крайней мере, это работает. Я очень подозреваю, что опечатка где-то с моей стороны, это, как правило, причина странных ошибок, кажется.

1 голос
/ 09 августа 2017

В моих случаях, для Windows, если у вас установлено несколько версий Python, если PYTHONPATH указывает на одну версию, другие не работали.Я обнаружил, что если вы просто удалите PYTHONPATH, все они отлично работают

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...