motofan logo
5 страниц V « < 2 3 4 5 >        
> 

Python 2.5 + pyGame 0.9.1, Собираем игры и программы на Python'е!

EXL
сообщение 27.11.2010, 19:16 Закрепленное сообщение!


Rock The Microphone
********

Группа: Администратор
Сообщений: 2 071
Регистрация: 12.5.2007
Из: г. Новосибирск
Пользователь №: 134 652





Компиляция Python 2.2.1

Изображение

Для начала скачиваем тулчейн
Устанавливаем его, подробнее про установку тут, в закреплённом посту
Скачиваем собственно Python-2.2.1
Скачиваем Патч для кросс-компиляции

1. Запускаем окружение:
Код
cd /home/z6
. setenv-z6.sh


2. Распаковываем Python-2.2.1 в /home/z6:

Код
tar -C /home/z6 -xzvf /home/z6/Python-2.2.1.tgz


3. Создаём папку python в тулчейне

Код
mkdir /opt/toolchains/motomagx/arm-eabi2/python


4. Применяем патч (он должен лежать /home/z6)

Код
cd /home/z6
cat python-cross-compile.diff | patch -p0


5. Заходим в директорию питона и выполняем
Код
cd/home/z6/Python-2.2.1
./configure --host=arm-linux-gnueabi --prefix=/opt/toolchains/motomagx/arm-eabi2/python
make

После Make ругнётся, что не может запустить
./python: 1: Syntax error: word unexpected (expecting ")")
Правильно, мы ведь компилировали не под х86, а под ARM
Так что выполняем
Код
make install


6. Копируем папку /opt/toolchains/motomagx/arm-eabi2/python
в телефон, я например скопировал её в /mmc/mmca1/games/ (/mmc/mmca1- это флешка)

7. Кстати, не забываем устанавливать необходимые либы, понадобиться libutils и ещё некоторые.
Если у вас тут возникнут проблемы - стучите в асечку

8. Ну и собственно Hello World

- Создаём файл test.py
- С помощью Notepad++ пишем туда следующее:
Код
print "Hello, Motorola!"

- Сохраняем, кидаем файл куда-нибудь на телефон, например в папку /mmc/mmca1/test/
- Создаём такой скриптик start.sh:
Код

#!/bin/sh
mypath=${0%/*}
export HOME=$mypath
LIBDIR1=/ezxlocal/download/mystuff/games/lib
LIBDIR2=/mmc/mmca1/games/lib
LIBDIR3=$mypath/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$LIBDIR1:$LIBDIR2:$LIBDIR3
PYTHONHOME=/mmc/mmca1/games/python
export PYTHONHOME
PYTHONPATH=${PYTHONHOME}/lib/python2.2/site-packages:$PYTHONPATH
PYTHONPATH=${PYTHONHOME}/lib/python2.2:$PYTHONPATH
PYTHONPATH=${PYTHONHOME}:$PYTHONPATH
export PYTHONPATH

LD_LIBRARY_PATH=${PYTHONHOME}/extras:${LD_LIBRARY_PATH}
export LD_LIBRARY_PATH

exec $PYTHONHOME/bin/python2.2 -v $mypath/test.py


- Копируем скрипт в папку test, подключаемся в телнет, выполняем:
Код
/mmc/mmca1/test/start.sh


- И видим следующее
Код
ture__.pyc
Python 2.2.1 (#1, Nov 28 2010, 15:31:13)
[GCC 3.4.3 (MontaVista 3.4.3-25.0.96.%{_mvl_build_id} 2007-11-17)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Hello, Motorola!
# clear __builtin__._
# clear sys.path
# clear sys.argv
# clear sys.ps1
# clear sys.ps2


- Избавиться от мусора можно просто убрав флажок -v в скрипте
Т.е
Код
exec $PYTHONHOME/bin/python2.2 $mypath/test.py

Тогда будет просто
Код
[root@Symbiosis ~]
#> /mmc/mmca1/test/start.sh
Hello, Motorola!


Результат можно вывести в файл:
Код
exec $PYTHONHOME/bin/python2.2 $mypath/test.py > $mypath/output.txt


9. Скрипт на питоне для получения числа пи.
Код

#! /usr/bin/env python

# Print digits of pi forever.
#
# The algorithm, using Python's 'long' integers ("bignums"), works
# with continued fractions, and was conceived by Lambert Meertens.
#
# See also the ABC Programmer's Handbook, by Geurts, Meertens & Pemberton,
# published by Prentice-Hall (UK) Ltd., 1990.

import sys

def main():
    k, a, b, a1, b1 = 2L, 4L, 1L, 12L, 4L
    while 1:
        # Next approximation
        p, q, k = k*k, 2L*k+1L, k+1L
        a, b, a1, b1 = a1, b1, p*a+q*a1, p*b+q*b1
        # Print common digits
        d, d1 = a/b, a1/b1
        while d == d1:
            output(d)
            a, a1 = 10L*(a%b), 10L*(a1%b1)
            d, d1 = a/b, a1/b1

def output(d):
    # Use write() to avoid spaces between the digits
    # Use str() to avoid the 'L'
    sys.stdout.write(str(d))
    # Flush so the output is seen immediately
    sys.stdout.flush()

main()

Код

#!/bin/sh
mypath=${0%/*}
export HOME=$mypath
LIBDIR1=/ezxlocal/download/mystuff/games/lib
LIBDIR2=/mmc/mmca1/games/lib
LIBDIR3=$mypath/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$LIBDIR1:$LIBDIR2:$LIBDIR3
PYTHONHOME=/mmc/mmca1/games/python
export PYTHONHOME
PYTHONPATH=${PYTHONHOME}/lib/python2.2/site-packages:$PYTHONPATH
PYTHONPATH=${PYTHONHOME}/lib/python2.2:$PYTHONPATH
PYTHONPATH=${PYTHONHOME}:$PYTHONPATH
export PYTHONPATH

LD_LIBRARY_PATH=${PYTHONHOME}/extras:${LD_LIBRARY_PATH}
export LD_LIBRARY_PATH

exec $PYTHONHOME/bin/python2.2 $mypath/pi.py > $mypath/pi.txt

Ждём с минутку, нажимаем Ctrl + C, и в файле pi.txt будет число пи smile.gif

10. Примеры скриптов, демок итд можно посмотреть в файле /home/z6/Python-2.2.1/Demo

В общем направление я дал. Дело за вами)
Теперь насчёт pyGame и визуальной оболочки.
pyGame реально портировать, он уже портирован на такие устройства как Dingoo A320, GP2X думаю нам нужно будет сделать лишь вывод изображения
Я не сильно знаком с питоном, но если из него можно будет запускать необходимые шоумодули - получим оболочку.

При написании мануала пользовался этим - ARM Cross-compiling Python и статьёй уважаемого racinglocura07

Зеркала. Прикрепил все файлы на мотофан:

Скачать исходники Python-2.2.1
Скачать патч python-cross-compile
Скачать уже откомпилированный Python-2.2.1 для Z6/V8/EM30/ZN5 и прочих MotoMagx
Скачать HelloWorld'ы, примеры скриптов

Сообщение отредактировал EXL - 28.11.2010, 13:47
Прикрепленный файл python-cross-compile.7z   ( 1.87 килобайт ) Кол-во скачиваний: 362
Прикрепленный файл python.7z   ( 1.59 мегабайт ) Кол-во скачиваний: 602
Прикрепленный файл Python-2.2.1.tgz.7z   ( 6.23 мегабайт ) Кол-во скачиваний: 1074
Прикрепленный файл test.7z   ( 4.77 килобайт ) Кол-во скачиваний: 365
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
EXL
сообщение 21.4.2014, 20:43


Rock The Microphone
********

Группа: Администратор
Сообщений: 2 071
Регистрация: 12.5.2007
Из: г. Новосибирск
Пользователь №: 134 652





Цитата((-EDGE-) @ Вчера, 23:42)
*
Ну и естественно нужна была сама прога типо эмуля n-gage

Нормального (портабельного) эмулятора N-Gage нет. Единственный N-Gage Cool! - closed source.

Цитата((-EDGE-) @ Вчера, 23:42)
* Хм, ну а как же тогда такие игры как ashen, asphalt 1-2, tomb raider если мне память не изменяет то там без питона и sql либ хрен че запустишь.

Это лишь означает что игра использует какие-то компоненты написанные на Python и использует SQL базы данных для хранения каких-либо данных. Ещё раз скажу: игры подобного типа никогда не пишутся на Python'е. Их ядро - это платформозависимый движок, написанный на С/С++ (в крайних случаях - Java) для обеспечения нормальной производительности на столь маломощных девайсах. Портирование таких игр практически невозможно из-за закрытого исходного кода. Теоретически возмножна статическая рекомпиляция но для этого требуется:
1. Уйма времени (~1-2 года) на игру. Причем необязательно, что она будет работать без глюков.
2. Уйма низкоуровневых знаний (как работает ARM процессор, его опкоды, команды, режимы) и пр.
Так что смело могу заявить - портирование игр с N-Gage не предоставляется возможным, если они не Open Source.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
fill.sa
сообщение 6.1.2020, 0:05


Гуру
******

Группа: Пользователи
Сообщений: 1 013
Регистрация: 8.2.2011
Из: Беларусь
Пользователь №: 223 758
Модель телефона: z6 V8
Прошивка: Linux SAedition MOD

Рейтинг: 333



Питончик обновили до 2.7.16
Консольные приложения

Сейчас бы пайгаэм собрать еще как-то. Не нашел как под арм это дело собрать.

Сообщение отредактировал fill.sa - 6.1.2020, 5:51
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
fill.sa
сообщение 26.1.2020, 20:14


Гуру
******

Группа: Пользователи
Сообщений: 1 013
Регистрация: 8.2.2011
Из: Беларусь
Пользователь №: 223 758
Модель телефона: z6 V8
Прошивка: Linux SAedition MOD

Рейтинг: 333



Vinrarus захотел запустить youtube-dl, а он как раз на питонет.
Появилась хорошая возможно обкатать питон на чем-то более серьездном чем просто число пи.
Буду писать некоторые заметки по ходу дела - возможно кому-то пригодятся в дальнейшем с запуском прог на питоне.

Для начала пара примеров как начать работать с питоном .
Самое первое , это нужно сказать системе где у вас хранятся модули от питона и где находится домашняя папка PYTHONPATH и PYTHONHOME. Можно и неуказывать, но без этого питон не сможет воспользоваться доп модулями и соответственно доп функциями. И будет все время просит указать эти папки.


Как запустить питоновский скрипт(.*py файл). Можно 2мя способами.
Это передать скрипт как аргумент питону /путь/к/bin/python2.7 /путь/к/скрипту/script.py
или войти в оболочку питона /путь/к/bin/python2.7 и там уже внутри запустить файл execfile('/путь/к/скрипту/script.py')

Для ручного подключения модулей, в питоне пишется import имя_модуля. Но если вы запускаете скрипт - там уже все это вписано.

Посмотреть где вы находитесь
import os # подключаем модуль os
os.getcwd() # просим os показать текущую папку


Получить список файлов в папке
import os # подключаем модуль os
os.listdir('/')) # просим os показать список файлов


Печать текста в консоль
print('привет мир')

Сообщение отредактировал fill.sa - 1.2.2020, 13:24
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
EXL
сообщение 27.1.2020, 9:43


Rock The Microphone
********

Группа: Администратор
Сообщений: 2 071
Регистрация: 12.5.2007
Из: г. Новосибирск
Пользователь №: 134 652





Цитата(fill.sa @ Сегодня, 3:14)
* youtube-dl

Разве она на Python 2? Вроде как на Python 3, а это практически разные языки.
При переносе youtube-dl будет много проблем, так как нужно заставить работать сеть на Python и ещё помнить про HTTPS-сертификаты, которые сегодня использует YouTube и которые уже скорее всего не поддерживаются в ZN5.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 27.1.2020, 18:01


Термоядерный
********

Группа: Пользователи
Сообщений: 3 323
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044
Модель телефона: WX160 & L7 & Z6 & ZN5-128
Прошивка: 740 MHz: Z6 and ZN5


Настроение:
Радиоактивные осадки...



Рейтинг: 1110.5



Цитата(EXL @ Сегодня, 12:43)
* Разве она на Python 2? Вроде как на Python 3, а это практически разные языки.

Аааа, ну тогда это не ЯП, а собачий сюрприз в тапке — деструктивный элемент любой ОС.
НЕ НУЖНО ТАКОЕ ДОБРО! angry.gif
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
J()KER
сообщение 27.1.2020, 18:13


man_of_motley
*******

Группа: Пользователи
Сообщений: 1 706
Регистрация: 1.6.2008
Пользователь №: 173 781
Модель телефона: Atrix 4G; ROKR E8; Moto X
Прошивка: my mod


Настроение:
DON'T PANIC!



Рейтинг: 1059



Цитата(EXL @ 27.1.2020, 11:43) *

Цитата(fill.sa @ Сегодня, 3:14)
* youtube-dl

Разве она на Python 2? Вроде как на Python 3, а это практически разные языки.
При переносе youtube-dl будет много проблем, так как нужно заставить работать сеть на Python и ещё помнить про HTTPS-сертификаты, которые сегодня использует YouTube и которые уже скорее всего не поддерживаются в ZN5.

2.6, 2.7, 3.2+

Ну не совсем разные. Можно спокойно писать программы которые будут поддерживать обе версии. Правда это больше не нужно
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
fill.sa
сообщение 28.1.2020, 13:05


Гуру
******

Группа: Пользователи
Сообщений: 1 013
Регистрация: 8.2.2011
Из: Беларусь
Пользователь №: 223 758
Модель телефона: z6 V8
Прошивка: Linux SAedition MOD

Рейтинг: 333



Цитата(J()KER @ Вчера, 19:13)
* 2.6, 2.7, 3.2+

Тоже глянул в гите https://github.com/ytdl-org/youtube-dl
Все верно 2.6, 2.7, 3.2+, так что должен запускаться. Я собирал как раз 2.7.16rc1.

Добавлено позже (28.1.2020, 14:34):
Цитата(VINRARUS @ Вчера, 19:01)
* Аааа, ну тогда это не ЯП, а собачий сюрприз в тапке — деструктивный элемент любой ОС.

Ну тут ты зря, как раз наоборот, чем больше не совместимостей в новой версии - тем больше это похоже на ЯП )) Новые классы, новые методы и способы работы, логично это все тянет несовместимости к старым версиям.

Даже твои любимые башеподобные проги, особенно что-то аля awk Или sed конкретно так отличаются между новыми и старыми версиями, а еще в придачу версиями для винды например, где много-го нету в них. И то что ты делаеш с помощь нового awk на старый версии тупо не сработает.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
EXL
сообщение 6.2.2020, 8:15


Rock The Microphone
********

Группа: Администратор
Сообщений: 2 071
Регистрация: 12.5.2007
Из: г. Новосибирск
Пользователь №: 134 652





fill.sa,
Ну что там? Получается?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
fill.sa
сообщение 6.2.2020, 8:47


Гуру
******

Группа: Пользователи
Сообщений: 1 013
Регистрация: 8.2.2011
Из: Беларусь
Пользователь №: 223 758
Модель телефона: z6 V8
Прошивка: Linux SAedition MOD

Рейтинг: 333



Цитата(EXL @ Сегодня, 9:15)
* Ну что там? Получается?

Пока с винрарусом никак не состыкуемся, последнее закончили на ошибке
Код
>>>  execfile('/mmc/mmca1/python/youtube-dl/__main__.py')
 File "<stdin>", line 1
   execfile('/mmc/mmca1/python/youtube-dl/__main__.py')
   ^
IndentationError: unexpected indent
>>>

не знаю, извините что это значит.

Сообщение отредактировал fill.sa - 6.2.2020, 8:47
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
EXL
сообщение 6.2.2020, 8:55


Rock The Microphone
********

Группа: Администратор
Сообщений: 2 071
Регистрация: 12.5.2007
Из: г. Новосибирск
Пользователь №: 134 652





Цитата(fill.sa @ Сегодня, 15:47)
* не знаю, извините что это значит.

Кажется это значит, что где-то в этой строке или чуть выше/ниже существует неконсистенция отступов. В Python вместо скобок используются отступы, поэтому их расположение там важно. А эта ошибка в REPL только появляется или при обычном выполнении файла тоже?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Python 2.5 + pyGame 0.9.1, Собираем игры и программы на Python'е! · ZN5 · Forum
 

5 страниц V « < 2 3 4 5 >
Ответ в темуСоздание новой темы
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 23.2.2020, 22:15

Форум живёт: