Кросс-скомпилированный исполняемый файл Cython и gcc завершается с сообщением «ImportError: нет модуля с именем« encodings »» - PullRequest
0 голосов
/ 17 октября 2019

Я пытался кросс-компилировать скрипты Python для платы ARM. Я новичок в CYTHON и PYTHON. У меня есть хост-машина x86_64 под управлением Linux. Сначала я использовал cython для преобразования моих скриптов в C код:

file_name=$1   # It could be ex.py
file_c_ext="$(echo $file_name | sed "s/\(.*\)\(\.\)\(.*\)/\1.c/")"   # It returns ex.c
file_o_ext="$(echo $file_name | sed "s/\(.*\)\(\.\)\(.*\)/\1.o/")"   # It returns ex.o

python3.5m -m cython $file_name -o $file_c_ext --embed

ПРИМЕЧАНИЕ: Вышеприведенный python3.5m работает на моем хост-компьютере.

Мой сценарий тестирования Python имеет:

print("Hello World")

После этого я создаю некоторый сценарий среды и вызываю кросс-компилятор.

${CC} -Os -I ${2}/usr/include/python3.5m -o $file_o_ext $file_c_ext -lpython3.5m -lpthread -lm -lutil -ldl

После этого я перемещаю ex.o с хостамашина для целевой машины. После запуска он показывает:

Я получаю эту ошибку:

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

Я пытался установить переменные PYTHONHOME и PYTHONPATH для нескольких каталогов, но это не сработало.

Тем не менее, компиляция на моем хост-компьютере для хост-компьютера работает отлично и выводит сообщение «Hello World».

...