Есть ли способ создать исполняемый файл, который запускает сценарии Python и Perl? - PullRequest
0 голосов
/ 28 апреля 2020

Я создаю Python программу, которая также запускает скрипт Perl изнутри. Есть ли способ создать исполняемый файл, где пользователь моей программы не должен устанавливать Perl, но имеет Python?

1 Ответ

1 голос
/ 29 апреля 2020

Вот пример того, как вы можете использовать pp для создания исполняемого файла (который не зависит от устанавливаемого исполняемого файла perl).

Я использую perlbrew с perl версия 5.30 в Ubuntu 20.04.

  • Первая установка pp:

    cpanm PAR::Packer
    
  • Создание тестового Perl сценария hello.pl (может потребоваться установить Path::Tiny первое):

    use feature qw(say);
    use strict;
    use warnings;
    use Path::Tiny;   # <-- NOTE: non-core module used
    say "Hello world! CWD = ", Path::Tiny->cwd;
    
  • Упакуйте его в исполняемый файл:

    pp -o hello hello.pl
    
  • Проверьте, что скрипт Perl независим исполняемого файла perl, удалив PATH:

    $ PATH= ./hello
    Hello world! CWD = /home/hakon/pp
    
  • Создать сценарий теста Python, t.py:

    import os
    os.system("./hello")
    
  • Запустите сценарий Python:

    $ python3 t.py
    Hello world! CWD = /home/hakon/pp
    

Я также протестировал это с контейнером Docker, куда я перенес скомпилированный исполняемый файл hello в контейнер и затем запустил hello из контейнера.

Примечание:

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

...