在 python 2.7 中导入 zipfile 模块时出现语法错误

Posted

技术标签:

【中文标题】在 python 2.7 中导入 zipfile 模块时出现语法错误【英文标题】:I am getting a syntax error while importing the zipfile module in python 2.7 【发布时间】:2016-10-31 17:51:02 【问题描述】:

脚本中的python命令:

import zipfile

屏幕输出

Chetans-MacBook-Pro:work chetankshetty$ python myprog.py
Traceback (most recent call last):
  File "myprog.py", line 1, in <module>
    import zipfile
  File "/Users/chetankshetty/Documents/Work/zipfile.py", line 1
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    ^
SyntaxError: invalid syntax

Chetans-MacBook-Pro:work chetankshetty$ 

【问题讨论】:

不是 myprog.py 里面有那个虚假的 DOCTYPE 行,而是 zipfile.py - 并且路径表明它是用户提供的东西,而不是内置的 zipfile 模块。删除那个文件,你不需要它。 谢谢。你是对的。 【参考方案1】:

您正在尝试导入内置的 zipfile 模块,但 Python 正在尝试在当前目录中导入名为 zipfile.py 的文件。这是因为Python Module Search Path

来自文档:

当一个名为spam的模块被导入时,解释器首先搜索 对于具有该名称的内置模块。如果没有找到,然后搜索 在由 变量sys.pathsys.path 从这些位置初始化:

包含输入脚本的目录(或当前目录)。 PYTHONPATH(目录名称列表,语法与 外壳变量PATH)。 依赖于安装的默认值。

初始化后,Python程序可以修改sys.path。目录 包含正在运行的脚本被放置在 搜索路径,在标准库路径之前。 这意味着 该目录中的脚本将被加载,而不是 库目录中的同名。这是一个错误,除非 更换的目的。有关更多信息,请参阅标准模块部分 信息。

Python 不会在内置 zipfile.py 所在的目录中查找,因为它首先找到 work/zipfile.py,它的语法无效,您可能根本不想导入。解决方案是重命名 work/zipfile.py 以便 Python 可以找到正确的文件。

【讨论】:

以上是关于在 python 2.7 中导入 zipfile 模块时出现语法错误的主要内容,如果未能解决你的问题,请参考以下文章

在 ipython/Jupyter notebook 中导入 scikit-learn

在 AWS Lambda 中导入 Paramiko 的问题

cx_Oracle 无法在 Python 3.9 中导入,尽管一切都已正确路径并且所有必需的部分都在 64 位上运行

在 MAC 上为 python 2.7 安装 opencv

2.7的python opencv导入错误

带有 python 2.7 的 Windows 上的 Readline 功能