python导入下划线模块

时间:2016-04-07 14:00:12

标签: python csv import

今天我遇到了一些我不理解的蟒蛇魔法,那就是

我有脚本,我正在使用像

这样的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
>>>

我的问题是,这是什么? _(下划线)在import语句中做了什么?以及为什么它找不到_csv模块

编辑 更新回溯 这个版本作为系统上的第二个安装,而不是我

因为我做了一些谷歌搜索看起来像_只是一个约定,应该没有任何意义,将检查模块搜索路径

1 个答案:

答案 0 :(得分:4)

一些纯python模块具有用C编写的关联模块,用于性能目的或处理低级操作。 _csv是csv模块的相关模块。如果您有兴趣,可以查看来源here

构建或安装Python时,应安装_csv模块。如果标准CPython安装中缺少这一点 - 即Python尚未针对有限平台(如移动设备或嵌入式设备)构建,则表明您的安装已损坏或损坏,需要重新安装。