web-dev-qa-db-fra.com

Python - impossible d'importer Set à partir de sets ("aucun module nommé sets"))

J'essaie d'apprendre python et j'essayais d'écrire quelque chose de simple. Je développe sous Pydev (Eclipse) en utilisant OS X 10.8. J'ai installé python 3.2 à l'aide du programme d'installation 64bits .dmg.

J'ai configuré l'interpréteur Python avec succès (ou je pense que oui, car je peux réellement créer un projet "hello world" et l'exécuter). Mais pour une raison quelconque, lorsque j'essaie d'importer Set (from sets import Set) J'obtiens cette erreur:

    from sets import Set;
ImportError: No module named sets

Je l'ai également testé en ligne de commande et me donne la même erreur.

Ensuite, j'ai regardé le dossier lib de mon répertoire python3 (sous /Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/) et il manque le fichier sets.py !!! La version 2.7 d'origine l'a sur /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/

J'ai également essayé de copier le 2.7 sets.py dans le 3.2, mais cela ne fonctionne pas ... S'il vous plaît, savez-vous ce que j'ai à faire?

22

Vous n'avez plus besoin du module sets. set est une classe intégrée dans Python 3 et peut être utilisée sans importation.

my_set = set()
45
Michael Mauderer

Dans chaque python jeux de versions sont intégrés comme set et Python 3 s'est débarrassé du module sets) obsolète.

Si vous voulez vous assurer que le code fonctionne également avec les versions anciennes, vous pouvez faire quelque chose comme ceci:

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

Si vous devez exécuter l'ancien code et que vous ne voulez pas le modifier (mauvais!):

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

vous n'avez pas besoin d'utiliser

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

ci-dessus est obsolète depuis la version 2.6:

vous pouvez utiliser le code ci-dessous au-dessus de la version 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)
0
Shyam Gupta