'Python: Can't import a function from another.py file
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
Solution 1:[1]
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.
Solution 2:[2]
Make sure both files are in the same directory and try:
from handshake import send_data
If this does not work, try to rename handshake.py file.
Solution 3:[3]
Are both handshake.py and siptest.py in the same directory?
If not You can try this:
1) Add __init__.py empty file to the directory that contains handshake.py.
2) Then add the path to that directory to LD_LIBRARY_PATH and PYTHONPATH
Solution 4:[4]
make sure the function is in the path
import sys
sys.path.insert(0, '/directory/tothe/handshakefile/')
and then
import handshake
Solution 5:[5]
I had the same issue, That happened while I tried to run the program from another directory by using python /home/name/workspace/test.py
Fix I tired.
import sys
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)
This need to be added at the beginning. This works for me.
Solution 6:[6]
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.
Solution 7:[7]
Try adding/updating the environment variable PYTHONPATH which should point to the folder that has handshake.py
Solution 8:[8]
Just make sure the files all are located in the root of the project, then this will work:
import handshake
handshake.send_data(argument)
Solution 9:[9]
You can use the method signTypedData from @metamask/eth-sig-util.
https://github.com/MetaMask/eth-sig-util/blob/main/src/sign-typed-data.ts#L521
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | mari |
| Solution 2 | Kirin |
| Solution 3 | Tejas |
| Solution 4 | Areza |
| Solution 5 | Jishnunand P K |
| Solution 6 | Ginxxx |
| Solution 7 | proton |
| Solution 8 | Hamid Heydarian |
| Solution 9 | Anderson Silva |
