This is a follow up question for a question I asked not long ago . The answer is correct and works great, but when I tried to apply it to the main package it didn't work.
Lets say I have the following files structure:
a/
->b/
->c/
-> __init__.py
-> script1.py
-> script2.py
->d/
-> __init__.py
-> script3.py
(The __init__
files are just like in the answer I linked above).
And in script3.py
I import script1.py
like so: from bc import script1
.
It works when I run it in Pycharm, but when I clone the repository in Colab (all this code is in a GitHub repository) I get the error: ModuleNotFoundError: No module named 'b'
Which makes sense because my package is not in the sys.path
variable. And adding the folder a
to the sys.path
manually, after I cloned the repository, helps but it is not a real solution because I can't always do it (eg in unit-tests).
So my question is, how can I fix it¿ Adding the __init__
file to folder b
didn't help.
Notes:
a
is the project's folder, so it is not part of the path.script3
like so from abd import script3
. In this case I must specify folder a
because, again, b
is not in sys.path
.You can backwardly add folder b
to your path and then import only from c
folder, like this:
from os.path import realpath, dirname
import sys
sys.path.append(dirname(dirname(realpath(__file__))))
from c import script1
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.