1
我有一個python模塊,需要能夠在Windows和Linux上運行。運行時會響應某些鍵盤的「熱鍵」。這是一個Python 3.3腳本。python導入語句在函數中失敗
在我的類的構造函數我執行以下操作:
self.setup_stdin()
功能setup_stdin
是這樣的:
def setup_stdin(self):
self.osname = os.name
if self.osname == 'posix':
self.setup_posix_stdin()
elif self.osname == 'nt':
self.setup_nt_stdin()
當我在Linux上運行,我有setup_posix_stdin
沒有問題,它只是使stdin
非阻塞,所以我可以處理按鍵。
setup_nt_stdin
如下:
def setup_nt_stdin(self):
import msvcrt
然而,當我在Windows 7上運行,我的程序炸彈與
NameError: global name 'msvcrt' is not defined
要解決這個問題,當我在Windows上運行,我謹導入語句到文件頂部,並用pass替換setup_nt_stdin
函數體,並且它工作正常。
我以爲我可以從一個函數導入。這個函數是在一個類裏面,還有一些其他的語法我錯過了嗎?
那麼,因爲我只有一個使用msvcrt的函數,我選擇了你的後一個解決方案,它只是在該函數中導入。所以,我的setup_nt_stdin就成了一個通行證。在Linux中,我需要做一些事情來設置stdin以使其非阻塞,所以當時我還創建了一個setup_nt_stdin,然後我發現它並不需要做任何事情,但我知道我需要msvcrt,所以我想,呃,我會在那裏導入它。我誤解了一份進口報告的範圍。謝謝。 – user1725779