Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Общие вопросы > iotop v 0.4.4 не работает в python v.3.2.2


Автор: v4567 15.2.2012, 23:20
Ребята помогите пожалуйста скачал iotop то есть пакет iotop версии 0.4.4  это питоновский скрипт показывает загрузку винтов. При установке он выдал ошибки:

Writing /usr/lib/python3.2/site-packages/iotop-0.4.4-py3.2.egg-info
  File "/usr/lib/python3.2/site-packages/iotop/ioprio.py", line 178
    print 'pid:', pid
               ^
SyntaxError: invalid syntax

  File "/usr/lib/python3.2/site-packages/iotop/ui.py", line 152
    except select.error, e:
                       ^
SyntaxError: invalid syntax

  File "/usr/lib/python3.2/site-packages/iotop/data.py", line 52
    print 'Could not run iotop as some of the requirements are not met:'
                                                                       ^
SyntaxError: invalid syntax

но файлы все установились, в том числе и сам скрипт iotop.

Вот сам скрипт:

#!/usr/bin/python
# iotop: Display I/O usage of processes in a top like UI
# Copyright © 2007, 2008 Guillaume Chazarain <[email protected]>, GPLv2
# See iotop --help for some help

import sys

try:
    from iotop.ui import main
except ImportError, e:
    print e
    print 'To run an uninstalled copy of iotop,'
    print 'launch iotop.py in the top directory'
else:
    try:
        main()
    except KeyboardInterrupt:
        pass
    sys.exit(0)


при установленом питоне версии 2.6 скрипт работае хорошо, а вот при установленной версии питона  3.2.2 при запуске выдаёт вот что:

  File "/usr/bin/iotop", line 10
    except ImportError, e:
                      ^
SyntaxError: invalid syntax

Я питона абсолютно не знаю, если кто может помочь помогите пожалуйста. Может как то можно проверить вообще работоспособность питона? Питон установлен на линукс, линукс самосбор lfs с добавлением своего. Заранее хочу сказать что дело скорей всего не в линуксе (то есть библиотеках и прочее), так как система работает нормально. За помощь заранее благодарен.

Автор: Backward 16.2.2012, 05:51
Ошибки выдает, потому что синтакcис третьего Python'а отличается от синтаксиса второго. Попробуйте натравить на библиотеку утилиту 2to3.

Автор: v4567 16.2.2012, 10:38
Backward спасибо за помощь, только вопрос на какую библиотеку я в питоне вообще ничего не понимаю.

Автор: Backward 16.2.2012, 15:09
На iotop, разумеется. Скачайте исходники, распакуйте, примените утилиту 2to3, попытайтесь установить, то что получилось.
ЗЫ. установленный ранее пакет удалите.

Автор: v4567 19.2.2012, 15:43
Backward сделал как ты говоришь - натравил 2yo3 на iotop, в результате чего были исправлены все синтаксические ошибки и iotop был без проблем установлен. Но при запуске выдало вот что:
Traceback (most recent call last):
  File "/usr/bin/iotop", line 16, in <module>
    main()
  File "/usr/lib/python3.2/site-packages/iotop/ui.py", line 571, in main
    main_loop()
  File "/usr/lib/python3.2/site-packages/iotop/ui.py", line 561, in <lambda>
    main_loop = lambda: run_iotop(options)
  File "/usr/lib/python3.2/site-packages/iotop/ui.py", line 465, in run_iotop
    return curses.wrapper(run_iotop_window, options)
  File "/usr/lib/python3.2/curses/wrapper.py", line 43, in wrapper
    return func(stdscr, *args, **kwds)
  File "/usr/lib/python3.2/site-packages/iotop/ui.py", line 455, in run_iotop_window
    taskstats_connection = TaskStatsNetlink(options)
  File "/usr/lib/python3.2/site-packages/iotop/data.py", line 146, in __init__
    self.family_id = controller.get_family_id('TASKSTATS')
  File "/usr/lib/python3.2/site-packages/iotop/genetlink.py", line 65, in get_family_id
    a = NulStrAttr(CTRL_ATTR_FAMILY_NAME, family)
  File "/usr/lib/python3.2/site-packages/iotop/netlink.py", line 131, in __init__
    Attr.__init__(self, attr_type, "%dsB" % len(data), data, 0)
  File "/usr/lib/python3.2/site-packages/iotop/netlink.py", line 97, in __init__
    self.data = struct.pack(data, *values)
struct.error: argument for 's' must be a bytes object

это наверное уже никак не исправить?

Автор: Backward 20.2.2012, 07:37
Цитата(v4567 @ 19.2.2012,  15:43)
это наверное уже никак не исправить?

Все зависит от опыта и понимания того, что происходит :(. Поправите в этом месте, наверняка вылезет такая же ошибка в другом месте - библиотека написана под вторую ветку Python'а :(

Автор: v4567 23.2.2012, 01:18
Всё поставил python v.2.7  переустановил iotop и он заработал.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)