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

Kashif Ahmad picture Kashif Ahmad · Sep 13, 2017 · Viewed 22.6k times · Source

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

Answer

Jing Chen picture Jing Chen · Aug 1, 2019

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 that which module should do what. And reduce the dependence.