LinuxForum.Fans
Тема

Существуют ли компиляторы, переводящие python в объектный код машины?

Автор: ivan_tiran 10 сообщений 1837 просмотров
28.12.2014 12:39 #407249

Вопрос может глупый, но всё же, с питоном стал знаком совсем недавно. Как я понимаю, работа кода python осуществляется через виртуальную машину, грубо скажем, что существенно снижает скорость работы. Кроме того, на ЭВМ должна быть установлена такая машина.
Всвязи с чем возникает вопрос. Можно ли как-то код питона компилировать в исполняемый файл машины или перевести нв язык СИ?
Не судите строго, просто очень интересно.

28.12.2014 15:37 #407275
Bif написал:

Благодарю, а почему файл с расширением exe получился, но запускается, как linux бинарник?

[console][pavel@host-100 lesson1]$ nuitka hello.py
/usr/bin/ld: skipping incompatible /usr/lib/libm.so when searching for -lm
/usr/bin/ld: skipping incompatible /usr/lib/libc.so when searching for -lc
[pavel@host-100 lesson1]$ ls
hello.build hello.exe hello.py
[pavel@host-100 lesson1]$ ./hello.exe
Неправильный тип данных
end programm
[pavel@host-100 lesson1]$ ./hello.exe 2 3
0.666666666667
end programm
[/console]

28.12.2014 20:24 #407353

расширения в линуксе значения не имеют, просто часть имени файла

28.12.2014 20:47 #407357
dyasny написал:
расширения в линуксе значения не имеют, просто часть имени файла

Это понятно. Зачем только делать такое разрешение в Linux?
Сиплюсплюшный код скомпилировать не удалость, компилятор ругается на отсутствие некоторых библиотек. Но скомпилировавшийся бинарник радует.

28.12.2014 21:40 #407380

ivan.tiran, сделайте
[console]file бинарник.exe[/console]
если обычный линуксовый бинарник, то просто переименуйте.

28.12.2014 21:46 #407383
"ivan.tiran" написал:
Зачем только делать такое разрешение в Linux?

спросите авторов. но вообще, exe это сокращение от executable

04.01.2015 16:55 #408194

Ну этот проект является оберткой для Cython, так что при желании можно использовать просто Cython

[console]$ cython --embed hello.py
$ gcc hello.c -I /usr/include/python2.7 -lpython2.7 -o hello[/console]

Подробнее: смотреть документацию по Cython

05.01.2015 01:14 · отредактировано #408338

ivan.tiran написал:
Вопрос может глупый, но всё же, с питоном стал знаком совсем недавно. Как я понимаю, работа кода python осуществляется через виртуальную машину, грубо скажем, что существенно снижает скорость работы. Кроме того, на ЭВМ должна быть установлена такая машина.
Всвязи с чем возникает вопрос. Можно ли как-то код питона компилировать в исполняемый файл машины или перевести нв язык СИ?
Не судите строго, просто очень интересно.
это не нужно. Если вам так уж нужно быстродействие, используйте сишку. Можно только некоторые критичные функции. Но вряд-ли это поможет.

Зыж никаких расширений в линуксе нет. Есть только имя. Имя исполняемого файла может быть любым, единственное что необходимо -- право выполнения. Для скриптов ещё и право чтения.
05.01.2015 09:17 #408358
"drBatty" написал:
Если вам так уж нужно быстродействие, используйте сишку.

Доктор вы правы! Лучше использовать Си, так как данный способ перевода программы Python в Си, требует целой кучи библиотек которые использует Python. По этому перенос бинарника с одной машины на другую, полученного данным способом, потребует установки и самого Python и библиотек которые он использует.

Python хорош тем, что число готовых решений под него уже обогнало Фортран.

Войдите или зарегистрируйтесь, чтобы ответить.