Найти - Пользователи
Полная версия: [curses] Ошибка с отсутствующим методом
Начало » Python для экспертов » [curses] Ошибка с отсутствующим методом
1
caufman
Установил библиотеку 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(), и что здесь имело в виду - вообще не понятно. Как избежать данной ошибки?
sergeek
тут же написано что unix-only, как вы там его установили то вообще?)
caufman
Там я прекрасно все прочел. И там же написано:
versions are available for DOS, OS/2, and possibly other systems as well.
что означает (примерно):
так же существуют порты на DOS, OS/2 и другие системы
а вот здесь эти самые порты даже в наличи имеются. Читайте внимательнее, пожалуйста, документацию.
sergeek
ну были бы эти ваши порты стоящими их бы включили в основную реализацию питона.
File "<pyshell#2>", line 1, in <module>
Непонятно что это за файл такой - pyshell. Скрипт каким-то ненормальным способом запускается и что-то нехорошее c stdout делает. Запустите его из консоли.
caufman
sergeek
ну были бы эти ваши порты стоящими их бы включили в основную реализацию питона.
Я установил все таки достаточно спорную реализацию этой библиотеки для винды. Но на самом python.org есть портированный модуль, это UniCurses, правда он еще требует pdcurses-win32, и там несколько велосипедо-бубново все работает (pdcurses не устанавливается в питон, а сбрасывается в папку с исполняемым скриптом).

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

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

Ну или переписывать модули вывода в IDE
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB