【问题标题】:python import module prefixed with an underscore带有下划线前缀的python导入模块
【发布时间】:2016-04-07 14:00:12
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: python csv import


    【解决方案1】:

    一些纯 Python 模块具有用 C 编写的相关模块,用于性能目的或处理低级操作。 _csv 是 csv 模块的此类关联模块。有兴趣可以看源码here

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

    【讨论】:

    • 确实是这样,我检查了列表 sys.builtin_module_names 确实 _csv 在一个环境中丢失并出现在另一个环境中,我怎么知道它,一团糟
    猜你喜欢
    • 1970-01-01
    • 2011-08-24
    • 1970-01-01
    • 2022-07-20
    • 1970-01-01
    • 1970-01-01
    • 2022-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多