Python time.time() -> IOError

Я только что установил базовый этап Gentoo 3 и получаю следующую ошибку при попытке вызвать time.time ():

sbx / # python
время импорта
Python 2.7.1 (r271:86832, 22 мая 2011 г., 14:53:09)
[GCC 4.4.5] на linux2
Введите "помощь", "авторское право", "кредиты" или "лицензия" для получения дополнительной информации.
>>> время импорта
>>> time.time()
Traceback (последний вызов был последним):
  Файл "", строка 1, в 
Ошибка ввода-вывода: ошибка [Errno 0]

Я нашел это, потому что когда я пытаюсь запустить emerge, я получаю:

sbx / # emerge
Traceback (последний вызов был последним):
  Файл "/ usr / bin / emerge", строка 32, в 
    из _emerge.main import emerge_main
  Файл "/usr/lib/portage/pym/_emerge/main.py", строка 6, в 
    ведение журнала импорта
  Файл "/usr/lib/python2.7/logging/__init__.py", строка 94, в 
    _startTime = time.time()
IOError: [Errno 11] Ресурс временно недоступен

Это собственное ядро, и я только что убедился, что скомпилирован с поддержкой RTC, но все равно не повезло. Любые идеи о том, почему это происходит?

2 ответа

Работало ли оно до вашего кастомного ядра? Загрузитесь с аварийного компакт-диска, загрузитесь в папку gentoo env и запустите ваш скрипт. Если это работает, это ваше ядро. Это настолько конкретно, насколько я могу.

Возможно, это ваша проблема?

http://bugs.gentoo.org/show_bug.cgi?id=330937

редактировать тестовый код C

#include <stdio.h>
#include <sys/time.h>

typedef struct timeval _PyTime_timeval;

void _PyTime_gettimeofday(_PyTime_timeval *tp)
{
    /* There are three ways to get the time:
      (1) gettimeofday() -- resolution in microseconds
      (2) ftime() -- resolution in milliseconds
      (3) time() -- resolution in seconds
      In all cases the return value in a timeval struct.
      Since on some systems (e.g. SCO ODT 3.0) gettimeofday() may
      fail, so we fall back on ftime() or time().
      Note: clock resolution does not imply clock accuracy! */
#ifdef HAVE_GETTIMEOFDAY
#ifdef GETTIMEOFDAY_NO_TZ
    if (gettimeofday(tp) == 0)
        return;
#else /* !GETTIMEOFDAY_NO_TZ */
    if (gettimeofday(tp, (struct timezone *)NULL) == 0)
        return;
#endif /* !GETTIMEOFDAY_NO_TZ */
#endif /* !HAVE_GETTIMEOFDAY */
#if defined(HAVE_FTIME)
    {
        struct timeb t;
        ftime(&t);
        tp->tv_sec = t.time;
        tp->tv_usec = t.millitm * 1000;
    }
#else /* !HAVE_FTIME */
    tp->tv_sec = time(NULL);
    tp->tv_usec = 0;
#endif /* !HAVE_FTIME */
    return;
}


int main(int argc, char** argv) {
    _PyTime_timeval time;
    _PyTime_gettimeofday(&time);
    double tval = 0;
    tval = (double) time.tv_sec + time.tv_usec * 0.000001;

    printf("Time value was %f\n", tval);
}

Если я скомпилирую это с gcc -DHAVE_GETTIMEOFDAY testtime.c Я получаю вывод рабочего времени, это то, что питон сводится к под капотом.

Возможно, находясь на встроенной платформе, вам нужно убедить python, что ваша функция времени, предоставляемая библиотекой c, неверна или что-то не так в битах ядра / C lib

Другие вопросы по тегам