В нескольких вопросах SO есть эти строки для доступа к родительскому каталогу кода, например. os.path.join(os.path.dirname(__ file__)) ничего не возвращает и os.path.join(os. path.dirname(__ file__)) ничего не возвращает
import os, sys
parentddir = os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir))
sys.path.append(parentddir)
Я понимаю, что os.path.abspath()
возвращает абсолютный путь чего-либо, а sys.path.append()
добавляет путь для доступа к коду. но что это за критическая строка ниже, что это значит?
os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir))
Есть ли другой способ достижения той же цели добавления родительского каталога кода где?
Эта проблема возникает из-за того, что я вызываю функции по каталогам, и иногда они имеют одинаковое имя файла, например. script1/utils.py
и script2/utils.py
. Я вызываю функцию из script1/test.py
, которая вызывает script2/something.py
, содержит функцию, которая вызывает script2/utils.py
и следующий код
script1/
utils.py
src/
test.py
script2/
utils.py
code/
something.py
test.py
from script2.code import something
import sys
sys.path.append('../')
import utils
something.foobar()
something.py
import os, sys
parentddir = os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir))
sys.path.append(parentddir)
import utils
def foobar():
utils.somefunc()