带有下划线前缀的python导入模块

标签 python csv import

嗨,今天我遇到了一些我不明白的 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 模块

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

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

最佳答案

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

构建或安装 Python 时应安装 _csv 模块。如果标准 CPython 安装中缺少它——即 Python 不是为移动或嵌入式设备等有限平台构建的——那么它表明你的安装已损坏或损坏,需要重新安装。

关于带有下划线前缀的python导入模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36478488/

相关文章:

python - 如何插入部分 Pandas 数据框

linux - 使用 Linux shell 命令,如何将通过管道流提供的文件列表编辑为 CSV 格式?

python - 如何导入已从父脚本导入的库?

python导入行为: different objects from same file?

python - 从导入的脚本中使用 Pygame 模块

python - 在 python 中读取图像 - 试验图像

python - Django 难以将 ModelAdmin.queryset 与 ModelAdmin.list_filter 一起使用来限制显示的过滤器 itrems

python - 使用 Python 在后台下载文件

postgresql - 将 CSV 文件导入 PostgreSQL

删除 read.csv 中的索引列