【问题标题】:Python - can't import Set from sets ("no module named sets")Python - 无法从集合中导入集合(“没有名为集合的模块”)
【发布时间】:2012-08-19 16:46:11
【问题描述】:

我正在尝试学习 python,并且我正在尝试编写一些简单的东西。我正在使用 OS X 10.8 在 Pydev (Eclipse) 下开发。我使用 64 位 .dmg 安装程序安装了 python 3.2。

我成功配置了 Python 解释器(或者我认为是这样,因为我实际上可以创建一个“hello world”项目并运行它)。但由于某种原因,当我尝试导入 Set (from sets import Set) 时,我收到此错误:

    from sets import Set;
ImportError: No module named sets

我也在命令行上测试过,同样的错误。

然后我查看了 python3 目录中的 lib 文件夹(在/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/ 下),它缺少 sets.py 文件!!!原来的 2.7 版本确实在/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/

我也尝试将 2.7 的 sets.py 复制到 3.2,但它都不起作用... 请问,你知道我该怎么办吗?

【问题讨论】:

  • 听起来你正在阅读的教程是为 Python 2(一个古老的版本)而不是为 Python 3 准备的。你应该切换教程,或者切换到一个版本Python 2 和切换教程到更现代的东西。
  • 我强烈建议不要将不同版本之间的 python 标准模块复制到它们自己的标准库位置。如果你开始这样做,你必须想象你一定做错了什么。标准库安装不需要用户维护。
  • 我知道。我只是绝望并想尝试(我有希望;))

标签: python import module


【解决方案1】:

您不再需要 sets 模块。 set 是 Python 3 的内置类,无需导入即可使用。

my_set = set()

【讨论】:

  • 非常感谢!我也尝试直接使用它,但我用大写 Set() 拼写它。很棒的stackoverflow :)
  • @RicardPérezdelCampo:我想不出任何以大写字母开头的标准库方法。
【解决方案2】:

在每个最近的 Python 版本中,集合都内置为 set,Python 3 完全摆脱了已弃用的 sets 模块。

如果您想确保代码也适用于旧版本,您可以执行以下操作:

try:
    set
except NameError:
    from sets import Set as set

如果您需要运行旧代码并且不想更改它(不好!):

try:
    from sets import Set
except ImportError:
    Set = set

【讨论】:

  • 如果得知依赖于 sets 模块的旧代码可以在没有它的 python 版本 (py3) 上运行,除了添加导入行之外没有其他更改,我会感到有些惊讶。无论如何;不错的答案,+1!
【解决方案3】:

你不需要使用

from sets import Set
engineers = Set(['John', 'Jane', 'Jack', 'Janice'])

以上已弃用自 2.6 版起

你可以使用下面的代码2.6以上版本

engineers = set(['John', 'Jane', 'Jack', 'Janice'])
programmers = set(['Jack', 'Sam', 'Susan', 'Janice'])
managers = set(['Jane', 'Jack', 'Susan', 'Zack'])
employees = engineers | programmers | managers  
print(employees)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-17
    • 1970-01-01
    • 2021-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多