2016-04-07 48 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