2016-09-29 2 views
0

Я хочу, чтобы моя программа cython была автономной исполняемой на linux, а не для импорта. ПослеCython автономный исполняемый файл на ubuntu

Cython --embed

я получил кесарево файл, теперь, как я могу сделать его исполняемым?

+0

Что вы пытаетесь сделать? вы пытаетесь сделать его 'import'able в Python или вы пытаетесь внедрить python и выполнить его? Пожалуйста, отредактируйте свой вопрос и уточните их, чтобы сделать его немного проще для использования, чтобы получить то, что вы пытаетесь сделать. –

+0

@Jim Fasarakis-Hilliard Я отредактировал вопрос. – user1779646

ответ

2

Я думаю, вам нужно скомпилировать полученный вами файл .c.

Предполагая, что вы используете Python 3.5 и не должны ссылаться на другие библиотеки, чем питона вы можете сделать это с помощью простого gcc команды, как:

gcc -I /usr/include/python3.5m -o your_program your_file.c -lpython3.5m 

(возможно, потребуется удалить m следующие номер версии)

Как вы ожидаете, он будет использовать инструкцию if __name__ == "__main__": в качестве точки входа в программу.

+0

спасибо, но не могли бы вы объяснить мне, что есть (m) в lpython3.5m, так как я могу успешно скомпилировать с 'm', и что было бы эффектами, если удалить 'm'. Нужно ли иметь «if__name = __ main», как я уже скомпилировал без него? – user1779646

+0

'm' указывает, что python был скомпилирован с поддержкой' PyMalloc', в нескольких словах более эффективная функция распределения, чем системные системы malloc (см. Http://stackoverflow.com/a/16677339/5050917 или https : //www.python.org/dev/peps/pep-3149/ для получения дополнительной информации). 'If ​​__name__ ==" __main __ ":' не является обязательным, вы также можете просто отказаться от кода, который хотите выполнить при запуске программы, точно так же, как при запуске с помощью python. – mgc

+0

Используйте 'ldconfig -p | grep python3.5', чтобы увидеть библиотеки, установленные в вашей системе. В моем случае я вижу, что у меня есть только libpthon3.5m. – mgc