Python: Can't import a function from another.py file

Viewed 40840

I have a file named handshake.py. Where there is a function send_data(argument). I want to import that function into another file named siptest.py. I am encountering two problems. I am using microsoft visual studio with windows 7, 64-bit. 1) I can't import function. I have tried using,

from handshake import*
handshkae.send_data(argument)

Which give me an error.

NameError: global name 'handshake' is not defined

Another option I have tried is using

import handshake
handshake.send_data(argument)

Which gives me an attribute error.

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

If I use it the other way, such as

from handshake import send_data 

2) MS Visual studio says. No test discovered, please check the configuration settings but I still can run the test somehow. and it says that the test is failed because of Import Error.

ImportError: cannot import name send_data

Both of the said files are in same directory. Plus the function is defined in a class 'TCPhandshake' in handshake.py

8 Answers

One possible reason: there exists reference cycle between module a.py and b.py:

In a.py: import b
In b.py: import a

The solution is to break the cycle. You need to make it clear which module should do what and reduce the dependence.

make sure the function is in the path

import sys
sys.path.insert(0, '/directory/tothe/handshakefile/')

and then

import handshake

I find a way to import files in the same directory by implementing keyword as and a object variable for example

import file as fileObj

But the downside is that when you want access to the imported files variable you have to first take fileObj.fileObjVariable.

Try adding/updating the environment variable PYTHONPATH which should point to the folder that has handshake.py

Just make sure the files all are located in the root of the project, then this will work:

import handshake
handshake.send_data(argument)
Related