Запуск hello.py из процесса Android

android python

113 просмотра

1 ответ

11618 Репутация автора

Я пытаюсь запустить скрипт Python hello.pyиз процесса Android.

Вот шаги, которые я выполнил:

  1. Я приобрел двоичные файлы Python и мне нужны связанные библиотеки.
  2. Я проверил их, и они работают в эмуляторе терминала.
  3. Я добавил их в свою папку ресурсов, скопировал в личное хранилище и сделал их исполняемыми.

Но все же я получаю следующую ошибку:

07-19 13:35:15.391 26991-26991/com.vibhinna.example I/System.out: Here is the standard output of the command:
07-19 13:35:32.001 26991-26991/com.vibhinna.example I/System.out: Here is the standard error of the command (if any):
07-19 13:35:32.001 26991-26991/com.vibhinna.example I/System.out: Fatal Python error: Py_Initialize: Unable to get the locale encoding
07-19 13:35:32.001 26991-26991/com.vibhinna.example I/System.out: ImportError: No module named 'encodings'
07-19 13:35:32.001 26991-26991/com.vibhinna.example I/System.out: Current thread 0xb6f0dec8 (most recent call first):

Вот код, используемый для выполнения файла.

    String pyPath = getFilesDir().getAbsolutePath() + "/usr/bin/python";
    String helloPath = getFilesDir().getAbsolutePath() + "/usr/bin/hello.py";
    ProcessBuilder pb = new ProcessBuilder(pyPath, helloPath);

    Process proc = pb.start();
    BufferedReader stdInput = new BufferedReader(new
            InputStreamReader(proc.getInputStream()));

    BufferedReader stdError = new BufferedReader(new
            InputStreamReader(proc.getErrorStream()));

    // read the output from the command
    System.out.println("Here is the standard output of the command:\n");
    String s = null;
    while ((s = stdInput.readLine()) != null) {
        System.out.println(s);
    }

    // read any errors from the attempted command
    System.out.println("Here is the standard error of the command (if any):\n");
    while ((s = stdError.readLine()) != null) {
        System.out.println(s);
    }

Что я делаю неправильно? Как мне заставить это работать?

Автор: Binoy Babu Источник Размещён: 19.07.2016 07:54

Ответы (1)


0 плюса

11618 Репутация автора

Решение

Это был чистый идиотизм. После нескольких дней стягивания волос я наконец узнал, что пошло не так. Я не скопировал /usr/lib/python3.5папку в соответствующую папку данных Android.

Эта ссылка была чрезвычайно полезна - как python находит пакеты?

Автор: Binoy Babu Размещён: 31.07.2016 08:51
Вопросы из категории :
32x32