Форум сайта python.su
0
Добрый день!
Я начинающий программист на Python 2.7 и у меня возник вопрос как передать пользователю свою программу. Пишу небольшие программы, которые работаю с БД - через FreeTDS: составляют отчеты, проверки делают, конвертируют из БД в файл и наоборот. Сам пишу на ОС Ubuntu (использую VIM, пробую PyCharm), а пользователь, чаще всего, работате на ОС Windows 7 или Windows Server 2008r2.
Хотелось бы передавать ему что из этого:
1. exe файл для запуска - скомпилированная программа со всеми библиотеками (как в С)
2. файл python который сам загрузить и установит необходимые модули (предполагается что Python уже установлен) и после уже можно запустить программу. Это более приемлимо, т.к. пользователь может захотеть внести небольшие изменения в саму py программу.
Нашел несколько инструкций в интернете, мало что понял. Может кто-нибудь поделится детальным описание действий или сказать где почитать?
На форуме я нашел такую тему за 2012г. - http://python.su/forum/topic/16202/?page=1#post-97395, но там говорится о ПО - pyinstaller, это хороший вариант?
Отредактировано Pr_Alexey (Май 13, 2014 12:28:46)
Офлайн
221
Pr_Alexey
Смотрите в сторону cx_freeze
Офлайн
49
Вариант №1 cx_Freeze
http://cx-freeze.readthedocs.org/en/latest/
Из всех сборщиков вроде py2exe, pyinstaller и т.п. наиболее поддерживаемый в настоящее время.
Способ применения: делаешь виртуалку с виндой, ставишь python и все необходимые пакеты + cx_Freeze, проверяешь, что программа твоя запускается и нормально работает. Пишешь файл описания для cx_Freeze, примерный шаблон:
#setup.py import sys from cx_Freeze import setup, Executable icon_file = "user.ico" buildOptions = dict(icon=icon_file) base = None if sys.platform == "win32": base = "Win32GUI" setup( name="My Super Puper Program", version="1.1.1", author="Ivan Ivanov", author_email="ivan@host.com", url="http://host.com", description="Cheers!", options=dict(build_exe=buildOptions), executables=[Executable("main.py", base=base, icon=icon_file)])
executables=[Executable("main.py", base=base, icon=icon_file)])
setup.py bdist_msi
nuitka --recurse-all program.py
from distutils.core import setup from Cython.Build import cythonize setup( ext_modules = cythonize("helloworld.pyx") )
python setup.py build_ext --inplace
Отредактировано Alen (Май 13, 2014 14:00:43)
Офлайн
253
Alen
Вариант №3 Cython
Pr_AlexeyНу надо еще вариант 0, который только и способен обеспечить этот функционал.
т.к. пользователь может захотеть внести небольшие изменения в саму py программу.
easy_install you_pack_name
Отредактировано doza_and (Май 13, 2014 20:34:42)
Офлайн
0
Спасибо всем за ответы, пока мне больше всего понравился совет doza_and, об использовании easy_install и bat файла. Я попробую его на практике, т.к. он выглядит просто и python у всех есть. К тому же, круг моих задач узкий, думаю у пользователя после установки 2-3 скриптов будут стоять все необходимые модули и задача еще больше упростится.
Офлайн