以下划线为前缀的 python 导入模块

WKo*_*dos 2 python csv import

嗨,今天我遇到了一些我不明白的 python 魔法,那就是

我有我使用 csv 模块的脚本,例如

import csv 
Run Code Online (Sandbox Code Playgroud)

它抛出

$> 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
Run Code Online (Sandbox Code Playgroud)

所以我检查了 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
Run Code Online (Sandbox Code Playgroud)

所以我运行了 python 控制台并重新输入了它

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

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

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

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

sna*_*erb 6

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

_csv 模块应在构建或安装 Python 时安装。如果标准 CPython 安装中缺少此功能 - 即 Python 不是为移动或嵌入式设备等有限平台构建的 - 则表明您的安装已损坏或损坏,需要重新安装。