Я следующая структура каталогов:Python относительного импорта для вызова сценария из случайного каталога
test1/
test1/a.py
test1/test2/b.py
b.py необходимо импортировать класс в a.py. Поэтому я могу добавить следующую строку в b.py перед импортом a.
sys.path.append (os.path.dirname (sys.argv [0]) + "/ ..")
Это работает и я могу вызвать b.py из любого каталога, и он может для импорта. Но это не удается, когда я пишу сценарий в другом каталоге для вызова этого файла с помощью execfile().
Я попытался относительно импорта, но я получаю «Покушение Относительного импорта ошибочного Non-пакет»
from ..a import someclass as cls
Я имею в обеих test1 __init__.py
, test2
ли кто-то есть идея, как это сделать Работа? Есть PYTHONPATH
путь?
Я есть '__init __. Py'. Тем не менее это не работает. '__file__' не годится, когда я третий скрипт вызывает b.py с помощью execfile. print '__file__' печатает имя другого файла. –
@iamrohitbanga: Я думаю, что вы столкнетесь с проблемами, несмотря ни на что, если вы пытаетесь разрешить скрипту 'execfile' модуль в пакете, который зависит от других модулей. 'execfile' оценивает чистый код модуля, поэтому все, что было относительным в модуле, также должно относиться аналогично в сценарии exec'12. – jdi
Думаю, вы правы. Думаю, мне нужно поиграть, чтобы найти более удобное решение для построения среды сборки. –