Форум сайта python.su
0
Добрый день.
В Eclipse + PyDev написал небольшой скрипт, использующий lxml. Сам импорт модуля выполняется так:
from lxml import etree
В эклипсе все прекрасно отрабатывает, но стоит попробовать выполнить эту строку в интерпретаторе в консоли - вываливается с ошибкой:
Python 2.7.3 (default, Oct 12 2012, 16:19:39)
on linux2
Type “help”, “copyright”, “credits” or “license” for more information.
>>> from lxml import etree
Traceback (most recent call last):
File “<stdin>”, line 1, in <module>
File “lxml.etree.pyx”, line 134, in init lxml.etree (src/lxml/lxml.etree.c:179662)
TypeError: encode() argument 1 must be string without null bytes, not unicode
Помогите понять, плз, как бороться, куда рыть.
Офлайн
14
УМВР.
FreestЭт че за наркоманство?
lxml.etree.c:179662
Офлайн
0
odnochlenЕсли честно, я вообще не понимаю, куда ссылается эта строка.
Эт че за наркоманство?
Офлайн
25
FreestА надо бы…
Если честно, я вообще не понимаю, куда ссылается эта строка.
FreestГугл -> lxml.etree.pyx попадаем сюда.
File “lxml.etree.pyx”, line 134
cdef bytes _FILENAME_ENCODING = (sys.getfilesystemencoding() or sys.getdefaultencoding() or 'ascii').encode(u"UTF-8")
Отредактировано s0rg (Ноя. 7, 2012 16:07:29)
Офлайн
14
FreestЯ имею в виду - это что, 179662-я строка??
src/lxml/lxml.etree.c:179662
Отредактировано odnochlen (Ноя. 7, 2012 17:08:36)
Офлайн
173
odnochlenДа это Cython нагенерировал из lxml.etree.pyx (там 3,2к
Я имею в виду - это что, 179662-я строка??
)
Офлайн
14
Не наркоманство ли? 3,2 к в оригинальном исходнике?
Офлайн
0
Действительно, с кодировками что-то непонятное у меня в системе (
sys.getdefaultencoding()
В эклипсе возвращает ‘utf-8’, а в консоли ‘ascii’
lxml, оказывается, прекрасно цепляется под рутом, под моим юзером вылетает эта ошибка, но если ввести команду импорта повторно - цепляется и работает.. Мистика..
Т.к. скрипт написан для личных нужд и запускается на личном ноуте, решил не заморачиваться и запускать его sudo.
Но при работе скрипта из консоли начала вываливаться ошибка кодека на кириллические символы (видимо, из-за sys.getdefaultencoding() ‘ascii’ ) Решил это:
reload(sys)
sys.setdefaultencoding('utf-8')
Переименую скрипт в “SkladKostiley.py”, всем спасибо!
Офлайн