This is the situation. I'm using Python 3.6
I currently have the next folder organization:
/MainProject
__init__.py
/Folder1
pyscript1.py
pyscript2.py
__init__.py
/Folder2
pyscript3.py
__init__.py
So, I'm trying to get a function that exists in pyscript1.py from pyscript3. I've also added a init.py at every level. Inside pyscript3.py I tried the following:
from . import Folder1
Giving the error:
ImportError: cannot import name 'Folder1'
Also I tried:
from .Utils import script1
Giving the error:
ModuleNotFoundError: No module named '__main__.Utils'; '__main__' is not a
package
I know that I can solve it using sys and os in the following manner:
sys.path.append(os.path.realpath('../..'))
But I wanted to know if this is possible without using sys.
Note that Folder1
is a directory, the .py
scripts are your modules.
In pyscript3
you should be able to go:
from Folder1 import pyscript1
Then you can access a method with name methodname
like:
pyscript1.methodname()
Otherwise you can import the method directly like:
from Folder1.pyscript1 import methodname
and use it like:
methodname()
EDIT:
For your program to see Folder1
and Folder2
, you need to run your program from the MainProject
folder.
Either move pyscript3
to your MainFolder
or write another script, let's call it main.py
, and call the necessary code to instantiate the class/call the function you want in pyscript3.py
.
To summarize, you always want to run the entry module from the base folder of your project.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With