Использование sys.path.append с абсолютным путем не является идеальным при перемещении приложения в другие среды. Использование относительного пути не всегда будет работать, потому что текущий рабочий каталог зависит от того, как работает скрипт.
Поскольку структура папок приложения исправлена, мы можем использовать os.path для получения полного пути.Например, если это структура:
/home/me/application/app2/some_folder/vanilla.py
/home/me/application/app2/another_folder/mango.py
И давайте предположим, что вы хотите импортировать модуль «манго». Вы можете сделать следующее в vanilla.py:
import sys, os.path
mango_dir = (os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
+ '/another_folder/')
sys.path.append(mango_dir)
import mango
Конечно, вам не нужно переменную mango_dir.
Чтобы понять, как это работает смотрит на этой интерактивной сессии, например:
>>> import os
>>> mydir = '/home/me/application/app2/some_folder'
>>> newdir = os.path.abspath(os.path.join(mydir, '..'))
>>> newdir
'/home/me/application/app2'
>>> newdir = os.path.abspath(os.path.join(mydir, '..')) + '/another_folder'
>>>
>>> newdir
'/home/me/application/app2/another_folder'
>>>
и проверьте документацию os.path.
Родственный: http://stackoverflow.com/q/43476403/674039 – wim 2017-04-18 15:56:55