2014-06-18 34 views
0

我正在研究一個涉及sleep()命令(運行2.7.2)的項目,它拋出了我從未見過的錯誤。這是一個測試腳本,我寫道:Python sleep()命令在http://rept.it上出錯

from time import sleep 

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

它返回:

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

任何幫助表示讚賞

+1

你在哪個平臺上運行這個平臺? – dano

+0

有關您的Python安裝的某些內容已損壞。您必須向我們提供儘可能多的有關您的設置以及您如何運行腳本的信息,因爲沒有人能夠自行復制它。 –

+1

我得到這個錯誤的所有谷歌匹配似乎涉及在線REPLs - 你在互聯網上還是在本地機器上使用REPL? – schodge

回答

2

time.sleep()使用select(如果可用)。出於某種原因HAVE_SELECT是在您的Python構建時定義的,但現在找不到該庫。

docs

...
在另一方面,時間()和睡眠()的精度比他們的UNIX的等價更好 :時間表示爲浮點 號碼, time()返回最準確的時間(在可用的情況下使用Unix gettimeofday()),並且sleep()將接受一個非零分數(使用Unix select()來實現此操作,其中 可用)。
...

從來源:

floatsleep(double secs) 
{ 
/* XXX Should test for MS_WINDOWS first! */ 
#if defined(HAVE_SELECT) && !defined(__BEOS__) && !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, &t) != 0) { 
#ifdef EINTR 
... 

可能是你的Python編譯爲一個不同的環境,它運行的位置。

你的Python從哪裏來?它是如何編譯的?

+0

我確實看到了文檔的那一部分,但沒有理解它。我在線上翻譯器2.7.2上運行,因爲它比下載解釋器更方便。我是否認爲這個錯誤是在那些運行該網站的人的結尾? – Samcfuchs

+1

repl.it實際上在您的瀏覽器上運行解釋器,所以我會說這是emscriptem中的錯誤,或者構建腳本錯誤地設置了它應該不會定義的時間。你可以檢查repl.it是否已經知道這個錯誤,或者提交關於它的一張票。 –