Как я понимаю вышеупомянутая проблема, причина, по которой я получаю эту ошибку, заключается в том, что мне нужно указать определенный путь для python для поиска библиотек / модулей.Настройка PYTHONHOME и / или PYTHONPATH должна исправить эту проблему.
[...]
Правильно ли я диагностировал проблему?
Звучит так.Интерпретатор Python выбирает путь к модулю по умолчанию, основываясь либо на PYTHONHOME
, либо на его месте установки и конфигурации во время компиляции, но последний появляется вне окна, когда вы встраиваете интерпретатор в другую программу.Интерпретатор использует PYTHONPATH
для идентификации дополнительных каталогов для поиска модулей.
Обычно вы не должны устанавливать PYTHONHOME
при использовании автономного интерпретатора, но это целесообразно делать при встраивании интерпретатора.
Если так, что я должен установить для этих двух переменных среды?
Вывод python3 -h
в моей системе включает в себя:
PYTHONPATH : ':'-separated list of directories prefixed to the
default module search path. The result is sys.path.
PYTHONHOME : alternate <prefix> directory (or <prefix>:<exec_prefix>).
The default module search path uses <prefix>/pythonX.X.
Обратите особое внимание на подсказку о том, что Python ожидает найти в каталоге с именем PYTHONHOME
.
В вашем случае вам, вероятно, следует установить PYTHONHOME
, потому что интерпретатор не распознает, какнайти системные модули.Фактическое значение, которое должна принимать переменная, зависит от того, где находится желаемая реализация Python (и это, вероятно, должна быть та же самая реализация, с библиотекой Python которой вы связали свою программу).Для системы Python на моей машине это будет
PYTHONHOME=/usr/lib:/usr/lib64
Для моей Anaconda 2, установленной в / opt / anaconda2, это будет
PYTHONHOME=/opt/anaconda2/lib
Вам не нужно устанавливать PYTHONPATH
(и, на самом деле, вы можете убедиться, что он установлен un ), если нет дополнительных мест, в которых Python должен искать модули.