Уведомления

Группа в Telegram: @pythonsu

Уведомления

  • Found 3494 posts.

Инструментальные средства разработки » Camelot (не запускается приложение) » Ноя. 9, 2009 14:53:43

Привет всем!

Есть некоторое небольшое приложение, работающее с базой SQLite, которое использует Camelot.
Так вот, на одном ноутбуке установил Camelot с помощью easy_install (sudo easy_install camelot). Соответственно, установились необходимые пакеты (SQLAlchemy, Elixir, pyExcelerator, Jinja). После этого приложение успешно запустилось.
Понадобилось запустить это приложение на другом компьютере, тоже ноутбуке с такой же операционкой Debian Lenny с kde4.3.2. Но не тут-то было. Команда “sudo easy_install camelot” прошла также успешно, все установилось, но при запуске приложения запускается оболочка Camelot, а база данных в ней не отображается. При этом в консоли вылетает такая ошибка:

$ python main.py
QObject: Cannot create children for a parent that is in a different thread.
(Parent is SignalSlotModelThread(0xa48e368), parent's thread is QThread(0x9e258b8), current thread is SignalSlotModelThread(0xa48e368)

И не пойму, в чем дело. Кто может подсказать, как это устранить? Может, что не установлено?


P.S. кажется, не совсем в том разделе создал тему. Модераторы, перенесите, пожалуйста!

Python для новичков » Общение с субпроцессом » Ноя. 8, 2009 11:35:05

Есть скрипт, он запускает другие скрипты, и в цикле передает им данные, они читают, возвращают другие данные, главный скрипт читает, отсылает им следующие данные и т.д.
попытался это написать через subprocess communicate(), оказалось что он ждет пока дочерний скрипт завершился. нарыл это:
http://code.activestate.com/recipes/440554/
Помогло в чем то.
Теперь материнский скрипт посылает данные дочерним, но читает их данные только первый раз. Потом, сколько не читай возвращает пустую строку (читаю через recv_some(process, 1, True, 1000)
из приведенного выше модуля). А дочерние скрипты точно отправляют, в stderr вывел
Что я делаю не так?

Инструментальные средства разработки » ecb под windows » Ноя. 6, 2009 19:33:08

Занесла судьба на некоторое время под windows, заодно решил и еще одну попытку с vim по emacs перебраться. Поставил ECB, теперь вопрос - как сделать чтобы он таги показывал для открытого файла? Он же это через etags делает? Так в путях etags есть.

Network » Проверка доступности хоста перед отправкой » Ноя. 5, 2009 15:20:51

Собственно нужна функция содержащая информацию о том как закончилось действие только что выполненное. случай следующий:
CLIENTHOST = '192.168.1.1'
CLIENTPORT = 33333
SERVERHOST = '192.1681.2'
SERVERPORT = 33335
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind((CLIENTHOST, CLIENTPORT))

sock.sendto(str(chr(100)),(SERVERHOST,SERVERPORT))
Нужно перед отправкой проверить есть ли соединение между сервером и клиентом, то есть слушает ли порт сервер. Именно в случае с удп датаграммами.
в перле нашел что то похожее - функция define.

Django » django + YAWS - стоит ли? » Окт. 27, 2009 23:43:37

Вот начал изучать любопытный язык erlang и нашел вот такой-вот написанный на этом языке веб сервер YAWS: http://yaws.hyber.org/.
Использовал ли кто-нибудь джангу под этим сервером (они заявляют 80000 конкурирующих соединений и высокое быстродействие)?
Поделитесь впечатлениями.

Web » wsgi, TurboGears и куки » Окт. 27, 2009 12:45:53

Бьюсь целый день, не могу понять в чем суть: apache+mod_wsgi+TurboGears. В коде TurboGears простой алгоритм: если в запросе есть кука tg-visit взять ее иначе генерировать новую. Удаляю в броузере куки для сайта, в запросе их точно нет, прилетает старая кука. Ничего не понимаю. Кеширование? Где?

Python для новичков » Как автоматизировать обработку исключений? » Окт. 26, 2009 14:15:27

Если во время чтения, например, отвалится sshfs, должна произойти IOError в цикле. Как можно корректно обработать такое исключение, и вынести в функцию, чтобы не повторять такой код?

Я сделал себе функцию-обёртку, которая обрабатывает IOError при открытии файла, чтобы выводить читабельное сообщение об ошибке. Но файлы я считываю по-разному и не могу вынести это в функцию (в некоторых случаях весь файл считать невозможно, это может быть не нужно, либо файл большой. В других случаях надо пройти весь файл).
def safe_open(*args):
try:
return open(*args)
except IOError:
sys.exit('Error when opening file \'{0}\'. Error #{1[0]}: {1[1]}'.format(\
args[0], sys.exc_info()[1].args))
...

with safe_open(myfile, 'r') as f:
for i in f:
print i

with safe_open(anotherfile, 'r') as f:
try:
conf = ''.join(f).format(**args)
except KeyError:
quit('\nOops, your template \'{0}\' has placeholders for parameters\nthat were not supplied in the command line: - {1}\n\nCan\'t proceed. Ending. Nothing has been changed yet.'.format(args['host_template'], '\n - '.join(sys.exc_info()[1].args)), 1)

Базы данных » SQLAlchemy, many-to-many, cascade » Окт. 22, 2009 15:34:46

Прошу помощи.
Берем модель many-to-many, классический вариант.
articles=sa.Table('articles',meta.metadata,
sa.Column('id',sa.types.Integer,primary_key=True,autoincrement=True,nullable=False),
sa.Column('name',sa.types.String(255),default=u'',nullable=False),
)
news=sa.Table('news',meta.metadata,
sa.Column('id',sa.types.Integer, primary_key=True, autoincrement=True,nullable=False),
sa.Column('name',sa.types.String(255),default=u'',nullable=False),
)
news_tag=sa.Table('news_tag',meta.metadata,
sa.Column('new_id',sa.types.Integer,sa.ForeignKey('news.id'),nullable=False,default=0),
sa.Column('article_id',sa.types.Integer,sa.ForeignKey('articles.id'),nullable=False,default=0),
)
class Articles(object):
def __repr__(self):
return self.name
class News(object):
def __repr__(self):
return self.name
orm.mapper(Articles,articles)
orm.mapper(
News,news,
properties={'articles':orm.relation(Articles,secondary=news_tag,backref=orm.backref('news'))}
)
Как правильно сделать каскадное удаление, да так, чтобы удалились только те потомки, у которых больше нет родителей?
Читал, что каскады вроде-бы в таких раскладах работают через пень-колоду. Так у меня и было. Может быть, есть-таки рецепт?

GUI » wxHtmlWindow - размер по содержимому » Окт. 21, 2009 23:26:11

Как установить размер wxHtmlWindow по размеру содержимого?
Может есть какая-то функция как в PIL, размер текста определенным шрифтом посчитать..
ничего подобного в хелпе не нашел, подскажите

Network » Пара вопросов о mechanize » Окт. 20, 2009 15:28:16

Делаю скраппер на mechanize и в процессе возникли некоторые вопросы:
1. Каким образом в mechanize установить таймаут на обработку запроса? В Browser.open, есть параметр timeout, но так по общему впечатлению от его использования нет никакого толка, т.е и запрос “задумался” и время таймаута вышло, а реакции никакой. Может я его не правильно готовлю? :)

2. Компьютер с подключением к инету находится за проксей. Программа для своей работы иногда пользуется другими проксями. Можно ли каким-нибудь образом “подружить” эту прокси с другими http, sock proxy на уровне python'а. Когда прога запускается с компьютера, который напрямую подключен к инету, все отлично.

GUI » проблемма с PyLab (Matplotlib) » Окт. 19, 2009 20:18:17

Пишу программу которая по пунктам
1. опрашивает плату АЦП(через dll) - записывает в файл(предполагается испрользовать в автоматическом режиме)
2. Читает из полученного файла инфу, преобразует её и рисует

проблема в том, что по частям весь код работает, если же поставить две части программы последовательно, то окошки pyLab выводятся, только при наличаии строчки, которая мне совсем не нужна:

u“закрываем драйвер платы АЦП”
a.close()
#конец кода от первой части

#странная строчка


#начало кода второй части
pylab.figure()

что код работает при наличии этой строчки выяснилось случайно(при копировании примера остальной код был подчищен)
такое поведение только matplotlib 0.98.5, если же поставить 0.99.1 - вываливается при попытке записать по нулевому адресу 0x0000..
код ошибки при использовании matplotlib 0.98.5 и отсутсвии строчки:

Traceback (most recent call last):
File “C:\py.tests\PISO-813\src\main.py”, line 292, in <module>
pylab.figure()
File “C:\Python25\lib\site-packages\matplotlib\pyplot.py”, line 251, in figure
**kwargs)
File “C:\Python25\lib\site-packages\matplotlib\backends\backend_tkagg.py”, line 92, in new_figure_manager
figManager = FigureManagerTkAgg(canvas, num, window)
File “C:\Python25\lib\site-packages\matplotlib\backends\backend_tkagg.py”, line 351, in __init__
self.toolbar = NavigationToolbar2TkAgg( canvas, self.window )
File “C:\Python25\lib\site-packages\matplotlib\backends\backend_tkagg.py”, line 609, in __init__
NavigationToolbar2.__init__(self, canvas)
File “C:\Python25\lib\site-packages\matplotlib\backend_bases.py”, line 1742, in __init__
self._init_toolbar()
File “C:\Python25\lib\site-packages\matplotlib\backends\backend_tkagg.py”, line 653, in _init_toolbar
borderwidth=2)
File “C:\Python25\lib\lib-tk\Tkinter.py”, line 2454, in __init__
Widget.__init__(self, master, ‘frame’, cnf, {}, extra)
File “C:\Python25\lib\lib-tk\Tkinter.py”, line 1942, in __init__
(widgetName, self._w) + extra + self._options(cnf))
_tkinter.TclError: bad screen distance “-1.#IND”

Django » FULL OUTER JOIN? » Окт. 18, 2009 00:23:19

Как средствами ORM сделать запрос LEFT OUTER JOIN?

select_related не возвращает записи для которых нет записей в связанных справочниках, т.е. не умеет делать OUTER JOIN.

Python для новичков » cmd из wxWidgets » Окт. 14, 2009 18:25:58

Люди, простите, инет только на работе, пользуюсь в свободное время, то есть времени искать по форуму нет. Собственно, извиняюсь за то, что не удосужился посмотреть, нет ли такой темы.
Хочу в прожке (использую wxWidgets с redirection=None) запустить cmd с некоторыми параметрами, чтобы оно работало вообще не зависимо от моей проги. Никаких пайпов, ничего. Пытался юзать subprocess, explorer запускает как надо, а вот cmd - вызывает незаметно, очевидно, дожидаясь где-то stdin и имея где-то stdout. То есть я ничего не вижу. Если хреначить в самой питоновской консоли, то всё нормально,а в wxWidgets - чёрное окно cmd не появляется, включается механизм перенаправлений.
Скажите, где мне поколдовать? Как получить нормальную cmd, не имеющую ничего общего с моей питопрогой?

Python для новичков » Работа с регэкспами » Окт. 12, 2009 11:43:43

Доброго времени суток!

Есть задача: прочитать текстовой файл и записать в файл output.txt все встреченные слова в алфавитном порядке с частотами их встречаемости. Делал так

import re
mas={}
for string in open(raw_input('Введите имя файла: '),'r'):
words=re.split('\W+|[0-9]|_|',string)
for word in words:
word = word.lower()
if mas.has_key(word):
mas[word]+=1
else:
mas[word]=1
f=open('c:\output.txt','w')
for key in sorted(mas.iterkeys()):
string=key+' '+str(mas[key])+"\n"
f.write(string)
print "Done"
так вот, начальный фрагмент файла output.txt

38157
a 3209
aa 1
aaaaa 1

Откуда берется первая строчка? почему подсчитываются пустые строки?

Django » ManyRelatedManager get ids » Окт. 9, 2009 13:53:41

Вообщем такая ситуация,
-есть две модели.
-Обе смотрят в таблицы на разных базах.
-между ними есть отношение ManyToMany

Я не могу использовать orm фичу по выбору связанных записей model1.model2s.all() (тк запрос использует join двух таблиц которые лежат в разных бд)

Вопрос: как можно используя ManyRelatedManager забрать список id связанного объекта?
(те чтобы запрос затрагивал только одну таблицу связку которая в одной бд.)
Те грубо говоря я хочу достать сначало связанные ид одной таблицы, и потом по ним с другой бд забрать реальные объекты.

Вообщем сейчас это выглядит так:
class m1(models.Model):
m2s = models.ManyToManyField(m2)


def get_m2s(self):
from django.db import connection
cursor = connection.cursor()
cursor.execute("SELECT m2_id FROM main_m1_m2s where m1_id = %s", [self.id])
rows = cursor.fetchall()
ids = []
for row in rows:
ids.append(str(row[0]))

return m2.objects.filter(id__in = ids)
Упростить можно? хотелось бы от sql избавится..

Django » Отрендерить тег в коде » Окт. 8, 2009 10:42:34

Как можно отрендерить тег в коде?
Сам делаю в лоб - сначала сначало импортирую ф-ю тега из templatetags, далее с помощью нее делаю context и отправляю его в шаблон потом шаблон вывожу, можно как нибудь упростить?

Python для экспертов » numpy помогите переписать функцию » Окт. 4, 2009 16:01:03

Собственно, работает, но написана совершенно не в духе Numpy, покажите, пожалуйста, как это должно в нем выглядеть.
import numpy.linalg as linalg    

def find_closest_line(lines, point):
ls = []
for x in zip(lines, lines[1:]):
n = (x[0][1]-x[1][1])*point[0]+(x[1][0]-x[0][0])*point[1]+ x[0][0]*x[1][1] - x[1][0]*x[0][1]
ls.append(abs(n / linalg.norm(x)))
return N.argmin(ls)
lines - массив точек, образующих линию, пример N.array(((-107,51.5),(-31,-72.5),(134,14.5)))
point - точка, пример N.array((21,-44.5))
возвращает индекс ближайшей линии, в данном случае 1.
Есть ли в numpy аналоги zip, map, filter? уж больно обширна документация, глаза разбегаются

Django » Поле BLOB с кастомным character set » Сен. 27, 2009 21:41:18

Черновой вариант блоба:

class BlobField(models.Field):
__metaclass__ = models.SubfieldBase

def db_type(self):
return 'BLOB'

def to_python(self, value):
return value

def get_db_prep_save(self, value):
return value
При сохранении TestBlobModel(bf=open('secundo.exe').read()).save() получаю
DjangoUnicodeDecodeError: ‘utf8’ codec can't decode byte 0x90 in position 2: unexpected code byte. You passed in ………..
И далее много буков.

При этом в базу - сохраняет. И если из базы достать этот файл - он останется неизменным.

Уже вертел и так и сяк, но хочу для, так сказать, общих целей водрузить блоб на службу. Вот только как сделать, чтобы джанго не проверял на соответствие юникоду это поле?

Django » extend Meta params for model » Сен. 25, 2009 21:01:26

Вообщем хочу добавить в модель некоторые свои параметры в описании Meta для моделей.
Вопрос в каком месте лучше расположить код который будет читать эти параметры выполнять нужные действия?