Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 1, 2013 15:14:16

caufman
Зарегистрирован: 2013-02-15
Сообщения: 56
Репутация: +  0  -
Профиль   Отправить e-mail  

[curses] Ошибка с отсутствующим методом

Установил библиотеку curses для win32. Но при инициации экрана, выходит ошибка:

Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
myscr = cur.initscr()
File "H:\Programming\Python\py33\lib\curses\__init__.py", line 30, in initscr
fd=_sys.__stdout__.fileno())
AttributeError: 'NoneType' object has no attribute 'fileno'
В самом модуле этот участок кода выглядит вот так:
def initscr():
    import _curses, curses
    # we call setupterm() here because it raises an error
    # instead of calling exit() in error cases.
    setupterm(term=_os.environ.get("TERM", "unknown"),
              fd=_sys.__stdout__.fileno())
    stdscr = _curses.initscr()
    for key, value in _curses.__dict__.items():
        if key[0:4] == 'ACS_' or key in ('LINES', 'COLS'):
            setattr(curses, key, value)
    return stdscr
Под _sys скрывается обычный sys (строка импорта: import sys as _sys). Но sys.__stdout__ действительно не имеем метода fileno(), и что здесь имело в виду - вообще не понятно. Как избежать данной ошибки?

Офлайн

#2 Дек. 1, 2013 16:52:28

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

[curses] Ошибка с отсутствующим методом

тут же написано что unix-only, как вы там его установили то вообще?)

Офлайн

#3 Дек. 1, 2013 18:49:54

caufman
Зарегистрирован: 2013-02-15
Сообщения: 56
Репутация: +  0  -
Профиль   Отправить e-mail  

[curses] Ошибка с отсутствующим методом

Там я прекрасно все прочел. И там же написано:

versions are available for DOS, OS/2, and possibly other systems as well.
что означает (примерно):
так же существуют порты на DOS, OS/2 и другие системы
а вот здесь эти самые порты даже в наличи имеются. Читайте внимательнее, пожалуйста, документацию.

Офлайн

#4 Дек. 1, 2013 19:40:54

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

[curses] Ошибка с отсутствующим методом

ну были бы эти ваши порты стоящими их бы включили в основную реализацию питона.

File "<pyshell#2>", line 1, in <module>
Непонятно что это за файл такой - pyshell. Скрипт каким-то ненормальным способом запускается и что-то нехорошее c stdout делает. Запустите его из консоли.

Офлайн

#5 Дек. 1, 2013 19:46:55

caufman
Зарегистрирован: 2013-02-15
Сообщения: 56
Репутация: +  0  -
Профиль   Отправить e-mail  

[curses] Ошибка с отсутствующим методом

sergeek
ну были бы эти ваши порты стоящими их бы включили в основную реализацию питона.
Я установил все таки достаточно спорную реализацию этой библиотеки для винды. Но на самом python.org есть портированный модуль, это UniCurses, правда он еще требует pdcurses-win32, и там несколько велосипедо-бубново все работает (pdcurses не устанавливается в питон, а сбрасывается в папку с исполняемым скриптом).

sergeek
Непонятно что это за файл такой - pyshell.
“<pyshell#2>” - это я так понял имя временного файла консоли. Это я набирал в окне интерпритатора в IDLE.

А вообще на другом ресурсе мне дали эту ссылку, где очень неплохо (хоть и по английски) написано, что все дело таки в замене стандартного метода вывода при использовании различных IDE и оболочек над обычной системной консолью. Если использовать стандартную систему вывода, т все работает нормально. То есть пишем программу как привыкли, а запуск только через ввод команды python script.py

Ну или переписывать модули вывода в IDE

Отредактировано caufman (Дек. 1, 2013 19:55:19)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version