Форум сайта python.su
Кстати думал может криво вставляю либы в zip изменил setup:
from distutils.core import setup import py2exe setup(console=['latlong.py'], options = {"py2exe": {"includes": ['pycurl',"lxml",'lxml.etree', 'lxml._elementpath', 'grab','grab.ext','grab.ext.text','grab.transport','grab.transport.curl','grab.tools' ] }})
Офлайн
noob_saibot
Все хорошо, но на рабочем компьютере админы VS2008 ставить не хотят, а без него cx_Freeze не ставится ругается на отсутствие vcvarsall.bat.
Офлайн
Я так полагаю меня люди понять не могут из-за криво сформулированной проблемы поэтому не отвечают (я оптимист):
from grab import Grab g = Grab(log_file='geo.html') g.setup(proxy=, proxy_type='http', proxy_userpwd=) x=raw_input("Sity ") y=raw_input("Street ") z=raw_input("Type of street ") n=raw_input("Number ") m=0 x.encode() y.encode() z.encode() n.encode() print type(x) l="http://geocode-maps.yandex.ru/1.x/?geocode=+"+x+",+"+y+"+"+z+",+"+n g.go(l) print type(l),(l) stroka=g.xpath_text("//*").split() lat=float(stroka[-1]) long=float(stroka[-2]) print "Your location:",lat,long end=raw_input()
Traceback (most recent call last): File "latlong.py", line 10, in <module> x.encode() UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in range(128)
Офлайн
Долго мучаясь с изменением кодировок получил:
from grab import Grab import sys reload(sys) if hasattr(sys,"setdefaultencoding"): sys.setdefaultencoding("utf-8") g = Grab(charset="UTF-8") g.setup(proxy='proxy', proxy_type='http', proxy_userpwd="") x=raw_input("Sity ") y=raw_input("Street ") z=raw_input("Type of street ") n=raw_input("Number ") print type(x) l="http://geocode-maps.yandex.ru/1.x/?geocode=+"+x+",+"+y+"+"+z+",+"+n g.go(l) g.request() print l te=g.xpath_text("//*") stroka=g.xpath_text("//*").split() lat=stroka[-1] long=stroka[-2] print "Your location:",lat,long print te.encode("cp1251") end=raw_input()
<type 'str'> http://geocode-maps.yandex.ru/1.x/?geocode=+Сантк-петербург,+Богатырский+проспект,+30 ERROR:root:Call to deprecated function xpath_text. Use grab.doc.select().text() instead. ERROR:root:Call to deprecated function xpath_one. Use grab.doc.select().one() instead. ERROR:root:Call to deprecated function xpath_list. Use grab.doc.select() instead. ERROR:root:Call to deprecated function xpath_text. Use grab.doc.select().text() instead. ERROR:root:Call to deprecated function xpath_one. Use grab.doc.select().one() instead. ERROR:root:Call to deprecated function xpath_list. Use grab.doc.select() instead. Your location: 10 0 С нтк-петербург, Бог тырский проспект, 30 0 10
Отредактировано noob_saibot (Ноя. 18, 2013 13:39:02)
Офлайн
Абсолютно такая же ошибка. В моём тоже есть Grab и я использую cx_Freeze. Как мне кажется(в моём случае это вероятнее всего) дело в криво установленном грабе или в curl, т.к. без них всё было ок. Граб вообще не устанавливался ни в какую(не знаю почему) поэтому просто закинул папку в сайд-паки. С курл та же история.
Офлайн
Апну ка я тему!
Программа:
# -*- coding: UTF-8 -*- from grab import * g = Grab(log_file='geo.html') g.setup(proxy='proxy', proxy_type='http', proxy_userpwd="") x=raw_input("Sity") y=raw_input("Street") z=raw_input("Type of street") n=raw_input("Number") l="http://geocode-maps.yandex.ru/1.x/?geocode=+"+x+",+"+y+"+"+z+",+"+n print type(l),l g.go(l) print type(l),(l) stroka=g.doc.select("//*").text() print "Your location:",stroka.encode("cp1251")
from distutils.core import setup import py2exe import sys reload(sys) if hasattr(sys,"setdefaultencoding"): sys.setdefaultencoding("cp1251") setup(console=['latlong.py'], options = {"py2exe": {"includes": ["pycurl","lxml",'lxml.etree', 'lxml._elementpath', 'grab','grab.ext','grab.ext.text','grab.transport','grab.transport.curl','grab.tools' ],"compressed": 1, "optimize": 2,"packages": ['encodings'] }})
<type 'unicode'> http://geocode-maps.yandex.ru/1.x/?geocode=+Санкт-петербург,++,+ <type 'unicode'> http://geocode-maps.yandex.ru/1.x/?geocode=+Санкт-петербург,++,+ Your location: Санкт-петербург, , 1 10 locality Россия, Санкт-Петербург other Санкт-Петербург RU Россия Северо-Западный федеральный округ Санкт-Петербург Санкт-Петербург Россия Санкт-Петербург 30.042834 59.744465 30.568322 60.090935 30.315868 59.939095
Санкт-петербург <type 'str'> <type 'str'> http://geocode-maps.yandex.ru/1.x/?geocode=+Санкт-петербург,++,+ <type 'str'> http://geocode-maps.yandex.ru/1.x/?geocode=+Санкт-петербург,++,+ Your location: С нкт-петербург, , 0 10
Офлайн
Тадам!!!
Вообщем почти сделал так чтобы работало.
В cmd ввожу chcp1251 -> далее ввожу данные по русски они отображаются иероглифами -> далее программа выдает верный результат.
Подскажите как “налету” поменять кодировку винды?
Офлайн