Ошибка при запуске команды Python sleep() http://rept.it

#python #python-2.7 #time #runtime-error #sleep

#python #python-2.7 #время #ошибка во время выполнения #сон

Вопрос:

Я работаю над проектом, включающим sleep() команду (работает 2.7.2), и он выдает ошибки, которые я никогда раньше не видел. Вот тестовый сценарий, который я написал:

 from time import sleep

print '1'
sleep(2)
print '2'
  

Он возвращает:

 >> 1
>> Internal error: ReferenceError: _select is not defined
  

Любая помощь приветствуется

Комментарии:

1. На какой платформе вы запускаете это?

2. Что-то в вашей установке Python не работает. Вам нужно будет предоставить нам как можно больше информации о вашей настройке и о том, как вы запускаете скрипт, поскольку никто другой не сможет повторить это самостоятельно.

3. Похоже, что все обращения Google, которые я получаю по этой ошибке, связаны с онлайн-реплами — используете ли вы REPL в Интернете или на своем локальном компьютере?

4. ДА… смотрите мой комментарий к ответу gnibbler ниже

Ответ №1:

time.sleep() использует select , если он доступен. По какой-то причине HAVE_SELECT была определена при сборке вашего Python, но теперь библиотека не может быть найдена.

Из документации


С другой стороны, точность time() и sleep() лучше, чем их эквиваленты в Unix: времена выражаются в виде чисел с плавающей запятой, time() возвращает наиболее точное доступное время (используя Unix gettimeofday(), где доступно), а sleep() примет время сненулевая дробь (Unix select() используется для реализации этого, где это возможно).

Из источника:

 floatsleep(double secs)
{
/* XXX Should test for MS_WINDOWS first! */
#if defined(HAVE_SELECT) amp;amp; !defined(__BEOS__) amp;amp; !defined(__EMX__)
    struct timeval t;
    double frac;
    frac = fmod(secs, 1.0);
    secs = floor(secs);
    t.tv_sec = (long)secs;
    t.tv_usec = (long)(frac*1000000.0);
    Py_BEGIN_ALLOW_THREADS
    if (select(0, (fd_set *)0, (fd_set *)0, (fd_set *)0, amp;t) != 0) {
#ifdef EINTR
...
  

Возможно, ваш Python был скомпилирован для среды, отличной от той, в которой он запущен.

Откуда взялся ваш Python? Как она была скомпилирована?

Комментарии:

1. Я видел этот раздел документации, но не смог его понять. Я запускаю 2.7.2 в онлайн- interpreter- repl.it только потому, что это удобнее, чем скачивать переводчик. Должен ли я предполагать, что эта ошибка находится в конце тех, кто запускает сайт?

2. repl.it на самом деле интерпретатор запускается в вашем браузере, поэтому я бы сказал, что это либо ошибка в emscriptem, либо сценарий сборки ошибочно устанавливает, что определяет, когда этого не должно быть. Вы могли бы проверить, если repl.it уже знает об этой ошибке или подаст заявление об этом.