Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 27, 2010 17:19:33

AndreyT
От:
Зарегистрирован: 2010-01-27
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

программы на python

привет прогеры на python, я начал изучать python, и меня интересует такой вопрос можно ли на нем написать крутую прогу для windows, и может ли программы на python запускаться на другом компьютере без интерпретатора



Офлайн

#2 Янв. 27, 2010 17:28:09

diam123
От:
Зарегистрирован: 2008-10-23
Сообщения: 105
Репутация: +  0  -
Профиль   Отправить e-mail  

программы на python

Чиста реальна на питоне круто пишут крутые проги и круто собирают закрученные standalone экзе которые тянут за собой половину чисто конкретного интерпретатора =\



Отредактировано (Янв. 27, 2010 17:28:22)

Офлайн

#3 Янв. 27, 2010 17:30:40

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

программы на python

AndreyT
можно ли на нем написать крутую прогу для windows
да
AndreyT
может ли программы на python запускаться на другом компьютере без интерпретатора
нет. На винде однако можно использовать инструменты типа py2exe, но в больших проектах просто использовать инструмент не получится, придется его допилитвать самому.



Офлайн

#4 Янв. 28, 2010 07:12:31

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

программы на python

Лично я регулярно “на питоне круто пишут крутые проги и круто собирают закрученные standalone экзе”.

> но в больших проектах просто использовать инструмент не получится, придется его допилитвать самому
Т.е. как и везде, потребуется мозг.

..bw



Отредактировано (Янв. 28, 2010 07:15:55)

Офлайн

#5 Янв. 28, 2010 16:42:01

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

программы на python

AndreyT
можно ли на нем написать крутую прогу для windows
Можно, но только если ты реальный кулхацкер!

P.S. Что то в последние месяцы странная обстановка на форуме… Хотя с другой стороны это говорит о возрастающей популярности питона, и подобное наверное неизбежно.

regall
но в больших проектах просто использовать инструмент не получится, придется его допилитвать самому.
Можно примерчик? У меня пока все получается без допиливания. Просто интересно, с чем возможно придется столкнуться.



Отредактировано (Янв. 28, 2010 16:43:57)

Офлайн

#6 Янв. 28, 2010 17:01:07

diam123
От:
Зарегистрирован: 2008-10-23
Сообщения: 105
Репутация: +  0  -
Профиль   Отправить e-mail  

программы на python

igor.kaist
P.S. Что то в последние месяцы странная обстановка на форуме…
Популярность действительно растёт, не вы первый это замечаете. С одной стороны радует, сдругой - нет.
igor.kaist
Можно примерчик? У меня пока все получается без допиливания
Не знаю, можно ли считать допиливанием или нет, но многопоточность в среде py2exe выполняется немного не так как в среде интерпритатора. В случае с py2exe обязательно необходимо дожидаться пока все потоки не завершат работу(Например, бесконечным циклом который проверяет threading.active_count()). Следовательно, хотя бы в этом конкретном случае некоторые модификации кода неизбежны (но не py2exe, если Вы имели ввиду конкретно его)



Офлайн

#7 Янв. 28, 2010 17:22:20

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

программы на python

Как-то немного странно звучит… Не могли бы вы указать, чем именно среда py2exe отличается от среды python так, что это влияет на потоки?
Интересен пример из кода (py2exe, естественно).
Я не уверен 100%, но кажется такой проблемы не встречал.



Офлайн

#8 Янв. 28, 2010 17:41:54

diam123
От:
Зарегистрирован: 2008-10-23
Сообщения: 105
Репутация: +  0  -
Профиль   Отправить e-mail  

программы на python

Андрей Светлов
Как-то немного странно звучит… Не могли бы вы указать, чем именно среда py2exe отличается от среды python так, что это влияет на потоки?
Уж простите грешного, возможно я неправильно выразился.
Вглубь я не вникал, так как это пока за гранью моих знаний.#Подразумевается ковыряние кода py2exe
Но вот проблема такая у меня была - “преждевременное” окончание потоков.
Пришлось делать так как я описал выше - насильно оставлять основной поток выполнения через бесконечный цикл.
Логически то так оно и должно быть, но в среде интепретатора это было необязательно.
В результате то что при запуске через интерпретатор работало, а после сборки в executable - нет.
И проблемка эта была не только у меня - я уж не помню точно где я это вычитал, но google translate с японского/китайского перевел приблизительно так…
Я постараюсь найти точный линк и оставить здесь, если найду.
Код уже, к сожалению исправлен. Попытаюсь воспроизвести, если выйдет.

UPD Воспроизвёл.
#!/usr/bin/env python
#-*-encoding:UTF-8-*-

import time
import threading

def target():
time.sleep(1)
print u"Опа-па"

for _ in xrange(10):
threading.Thread(target=target).start()
При запуске через интерпритатор - работает.
После “сборки” через py2exe - нет. #Подразумевается работа, такая же как и через интерпритатор
setup.py
# ======================================================== #
# File automagically generated by GUI2Exe version 0.5.0
# Copyright: (c) 2007-2009 Andrea Gavana
# ======================================================== #

# Let's start with some default (for me) imports...

from distutils.core import setup
from py2exe.build_exe import py2exe

import glob
import os
import zlib
import shutil

# Remove the build folder
shutil.rmtree("build", ignore_errors=True)


class Target(object):
""" A simple class that holds information on our executable file. """
def __init__(self, **kw):
""" Default class constructor. Update as you need. """
self.__dict__.update(kw)


# Ok, let's explain why I am doing that.
# Often, data_files, excludes and dll_excludes (but also resources)
# can be very long list of things, and this will clutter too much
# the setup call at the end of this file. So, I put all the big lists
# here and I wrap them using the textwrap module.

data_files = []

includes = []
excludes = ['_gtkagg', '_tkagg', 'bsddb', 'curses', 'email', 'pywin.debugger',
'pywin.debugger.dbgcon', 'pywin.dialogs', 'tcl',
'Tkconstants', 'Tkinter']
packages = []
dll_excludes = ['libgdk-win32-2.0-0.dll', 'libgobject-2.0-0.dll', 'tcl84.dll',
'tk84.dll']
icon_resources = []
bitmap_resources = []
other_resources = []


# This is a place where the user custom code may go. You can do almost
# whatever you want, even modify the data_files, includes and friends
# here as long as they have the same variable name that the setup call
# below is expecting.

# No custom code added


# Ok, now we are going to build our target class.
# I chose this building strategy as it works perfectly for me :-D

GUI2Exe_Target_1 = Target(
# what to build
script = "1.py",
icon_resources = icon_resources,
bitmap_resources = bitmap_resources,
other_resources = other_resources,
dest_base = "1",
version = "0.1",
company_name = "No Company",
copyright = "No Copyrights",
name = "Py2Exe Sample File",

)

# No custom class for UPX compression or Inno Setup script

# That's serious now: we have all (or almost all) the options py2exe
# supports. I put them all even if some of them are usually defaulted
# and not used. Some of them I didn't even know about.

setup(

# No UPX or Inno Setup

data_files = data_files,

options = {"py2exe": {"compressed": 2,
"optimize": 2,
"includes": includes,
"excludes": excludes,
"packages": packages,
"dll_excludes": dll_excludes,
"bundle_files": 1,
"dist_dir": "dist",
"xref": False,
"skip_archive": False,
"ascii": False,
"custom_boot_script": '',
}
},

zipfile = None,
console = [],
windows = [GUI2Exe_Target_1],
service = [],
com_server = [],
ctypes_com_server = []
)

# This is a place where any post-compile code may go.
# You can add as much code as you want, which can be used, for example,
# to clean up your folders or to do some particular post-compilation
# actions.

# No post-compilation code added


# And we are done. That's a setup script :-D



Отредактировано (Янв. 28, 2010 18:02:50)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version