В моем случае я внедрил Python в свое приложение. Когда путь к моему приложению содержит символ, отличный от латинского 1, Py_Initialize вызывает exit(1) внутри (дополнительная информация позже).
Поэтому я проверил, можно ли воспроизвести это с помощью стандартного исполняемого файла интерпретатора.
Python-2.7.x в Windows, похоже, не работает, когда путь PYTHONHOME содержит символ вне кодировки latin-1. Проблема в том, что модуль сайт не может быть найден и импортирован. Поскольку умлауты, похоже, работают, в чем здесь фактическое ограничение? Поддерживается ли только латиница-1? Почему тогда это работает на OSX?
C:\Users\ъ\Python27\python.exe // fails to start (KOI8-R)
^
C:\Users\ġ\Python27\python.exe // fails to start (latin-3)
^
C:\Users\ä\Python27\python.exe // works fine (latin-1)
^
Любые идеи?
Предыстория:
Я еще не изучал код, но Python 2.6 и Python 2.7 также ведут себя по-разному, когда сайт недоступен. Py 2.6 просто печатает сообщение, Py 2.7 отказывается запускаться.
static void
initsite(void)
{
PyObject *m;
m = PyImport_ImportModule("site");
if (m == NULL) {
...
// Python 2.7 and later
exit(1);
// Python 2.6 and prior
PyFile_WriteString("'import site' failed; traceback:\n", f);
}
...
}
Python 2.7: https://github.com/enthought/Python-2.7.3/blob/master/Python/pythonrun.c#L725
Python 2.6: https://github.com/python-git/python/blob/master/Python/pythonrun.c#L705