2017-09-13 4 views
0

J'ai un fichier nommé handshake.py. Où il y a une fonction send_data (argument). Je veux importer cette fonction dans un autre fichier nommé siptest.py. Je rencontre deux problèmes. J'utilise Microsoft Visual Studio avec Windows 7, 64 bits. 1) Je ne peux pas importer la fonction. J'ai essayé d'utiliser,Python: impossible d'importer une fonction depuis un autre fichier .py

from handshake import* 
handshkae.send_data(argument) 

Qui me donne une erreur.

NameError: global name 'handshake' is not defined 

Une autre option que j'ai essayé utilise

import handshake 
handshake.send_data(argument) 

Ce qui me donne une erreur d'attribut.

AttributeError: 'module' object has no attribute 'send_data' 

Si je l'utilise dans l'autre sens, comme

from handshake import send_data 

2) MS Visual Studio dit. Aucun test n'a été découvert, veuillez vérifier les paramètres de configuration mais je peux quand même exécuter le test d'une manière ou d'une autre. et il est dit que le test a échoué à cause de l'erreur d'importation.

ImportError: cannot import name send_data 

Les deux fichiers sont dans le même répertoire. De plus la fonction est définie dans une classe « TCPhandshake » dans handshake.py

Répondre

0

Assurez-vous que les deux fichiers se trouvent dans le même répertoire et essayer:

from handshake import send_data 

Si cela ne fonctionne pas, essayez de renommer handshake.py fichier.

+0

J'ai modifié certaines informations en dernière ligne. S'il vous plaît regardez ça. Peut-être cela donnera plus de clarté à ma question et oui les deux fichiers sont dans le même répertoire. J'ai essayé en changeant le nom. Les deux problèmes persistent toujours comme mentionné dans ma question. C'est-à-dire que ImportError et MS Visual Studio ne reconnaissent plus les tests –

+0

Vous n'avez pas remarqué que votre fonction était définie dans une classe. Essayez d'importer la classe en premier lieu, puis instanciez la classe: à partir du fichier import TheClass theclass = TheClass() – Kirin

0

J'ai eu le même problème, ce qui est arrivé pendant que j'ai essayé d'exécuter le programme à partir d'un autre répertoire en utilisant python /home/name/workspace/test.py

Fix je fatigué.

import sys 
import os 

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 
sys.path.append(BASE_DIR) 

Ceci doit être ajouté au début. Cela fonctionne pour moi.

0

Les deux handshake.py et siptest.py sont-ils dans le même répertoire?

Si non Vous pouvez essayer ceci: 1) Ajouter __init__.py fichier vide dans le répertoire qui contient handshake.py. 2) Ensuite, ajoutez le chemin d'accès à ce répertoire à LD_LIBRARY_PATH et PYTHONPATH