2015-06-24 10 views
0

Вот мои настройки каталога:импорта локального пакета без изменения sys.path

mydir 
├── folder 
    └── subfolder 
     └── script1.py 
└── shared 
    ├── otherstuff 
    ├── script2.py 
    └── pkg 
     ├── box.py 
     └── __init__.py 

script2.py начинается с

import pkg 

и она отлично работает. Когда я включаю ту же линию в script1.py, я получаю:

Traceback (most recent call last): 
    File "script1.py", line 1, in <module> 
    import pkg 
ImportError: No module named 'pkg' 

Есть ли хороший способ получить синтаксис, просто работать в script1.py? В настоящее время я использую sys.path.insert(0, os.path.abspath('./shared')) до import pkg (я звоню script1 от mydir), но это не поддается легкому повторному использованию, и это неудобно, и изменение sys.path, вероятно, является плохим решением в целом.

Что мне здесь не хватает? Каков наилучший способ получить pkg в script1.py?

Примечание: Вчера я спросил this, но я не понимал, что ответы там не будут работать для структуры, описанной выше, и это то, что мне действительно нужно. К сожалению.

Python 3.x, btw.

ответ

0

Попробуйте это.

sys.path.append('./../../shared/') 

Строгие ограничения: Это будет работать только если вы включите его в script1.py, а если и только если script1.py остается в подкаталоге mydir/folder/subfolder.

Кроме того, насколько мне известно, изменение sys.path - это в значительной степени то, что вам нужно делать в ситуациях, подобных этому, поэтому не чувствуйте себя плохо в этом.

Смежные вопросы