Dans un fichier nommé BinarySearch.py
je donne les résultats suivants:Comment importer mes propres fichiers python?
class SearchResult:
def __init__(self):
self.was_found = False
self.index = 0
def __str__(self):
s = "SearchResult"
s = s + " was found: "
s = s + str(self.was_found) + "index: " + str(self.index)
return s
Dans un autre dossier, disons qu'il est nommé file2.py
je:
import os
cwd = os.getcwd()
import sys
sys.path.append(cwd)
import BinarySearch
Cependant, lorsque je tente de lancer file2.py
, je reçois le message d'erreur suivant:
NameError: name 'SearchResult' is not defined
Il semble que le import BinarySearch
ne l'ont pas fait im port BinarySearch
J'utilise l'IDE Spyder. Les deux fichiers (BinarySearch.py
et file2.py
) se trouvent dans le même répertoire. De plus, je suis allé au gestionnaire Tool> PYTHONPATH et j'ai ajouté le répertoire au chemin. J'ai également essayé de redémarrer spyder pour voir si c'était ce qui était nécessaire pour que le changement de chemin entre en vigueur. Ça ne marche toujours pas.
EDIT:
La ligne file2.py
qui a jeté l'erreur est la suivante:
sr = SearchResult()
Au départ, je suppose que la déclaration import BinarySearch
aurait le même comportement que si je copiais le contenu de BinarySearch.py et collé là où l'instruction import
était dans le fichier file2.py. Je vois maintenant ce n'est pas comment fonctionne import
.
'à partir de BinarySearch importer SearchResult' n'est pas suffisant. Il y a d'autres choses dans le fichier BinarySearch.py, des choses à part 'SearchResult', dont j'ai aussi besoin. –
Dans ce cas, utilisez 'import BinarySearch' et faites référence à chaque chose avec le nom du module:' BinarySearch.SearchResult', 'BinarySearch.SomethingElse', ... ou utilisez' from BinarySearch import SearchResult, SomethingElse'. Une autre option est d'utiliser 'from BinarySearch import *' et cela vous permettra d'utiliser tout ce qui se trouve dans BinarySearch, mais c'est [déconseillé] (https://docs.python.org/2/howto/doanddont.html#from-module- importer) – dacada