2016-04-07 84 views
1

嗨今天我已經encounterd一些Python魔術我不明白,這是蟒蛇進口下劃線模塊

我有我在哪裏使用CSV模塊像

import csv 

腳本,它拋出

$> python generate_xml.py 
generate_xml.py:21: SyntaxWarning: name 'parser' is assigned to before global declaration 
    global parser 
Traceback (most recent call last): 
    File "generate_xml.py", line 2, in <module> 
    import csv 
    File "/usr/local/python2.5.1/lib/python2.5/csv.py", line 7, in <module> 
    from _csv import Error, __version__, writer, reader, register_dialect, \ 
ImportError: No module named _csv 

所以我檢查了csv.py文件,我看到的是這個

from _csv import Error, __version__, writer, reader, register_dialect, \ 
       unregister_dialect, get_dialect, list_dialects, \ 
       field_size_limit, \ 
       QUOTE_MINIMAL, QUOTE_ALL, QUOTE_NONNUMERIC, QUOTE_NONE, \ 
       __doc__ 
from _csv import Dialect as _Dialect 

,所以我已經運行python控制檯,並重新輸入它像

>>> _csv 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
NameError: name '_csv' is not defined 
>>> from _csv import Error 
>>> 

我的問題是,這是什麼? _(下劃線)在導入語句中做了什麼?爲什麼它不能找到_csv模塊

編輯 更新回溯 這個版本被安裝爲系統上的第二,不是我

爲我做了一些谷歌搜索看起來像_is只是一個約定,並應具有不任何含義,將檢查模塊搜索路徑

+0

這是您的系統Python,還是您自己安裝/構建它? – snakecharmerb

+0

你可以顯示更多的代碼,並完成回溯? –

+0

更新了其他信息 – WKordos

回答

4

一些純粹的python模塊具有用C語言編寫的相關模塊,用於性能目的或處理低級操作。 _csv是csv模塊的一個關聯模塊。如果你有興趣,你可以看到源碼here

當構建或安裝Python時,應該安裝_csv模塊。如果標準CPython安裝中缺少這種功能 - 即Python尚未爲諸如移動設備或嵌入式設備等有限平臺構建,則表明您的安裝已損壞或損壞,需要重新安裝。

+0

確實如此,我已經檢查了sys.builtin_module_names列表,事實上_csv在一個環境中丟失,並且出現在另一個環境中,我怎麼能知道它,一團糟 – WKordos