2014-10-14 5 views
1

У меня есть следующий каталог непосредственно в дереве git, который я бы хотел ссылаться, добавив его базовый каталог в PYTHONPATH, не требуя упаковки и установки модулей.Импорт модулей python непосредственно из необработанного дерева git

После добавления PYTHONPATH, если внутренний cstruct реж вырывался один уровень, то, так как он имеет инициализации .py файл, это тривиально просто сделать

import cstruct 

однако, так как я также сохраняя файлы настроек, он должен быть вложен на другой уровень, который делает импорт, такой как выше, не работает.

Есть ли способ обойти это? Я думал о том, чтобы создать init .py в базовом каталоге, который мог бы «вытащить» внутреннюю структуру или как-то добавить внешний путь к пути python, но я не уверен, как это сделать.

Для ясности я использую cstruct здесь как пример, который я вытащил из github, но у меня есть полдюжины таких библиотек, которые мне бы очень хотелось просто привязать ad-hoc в моей среде dev, не требуя пакета + установить.

. 
├── cstruct 
│   ├── cstruct 
│   │   ├── examples 
│   │   │   ├── fdisk.py 
│   │   │   └── __init__.py 
│   │   ├── __init__.py 
│   │   └── tests 
│   │    ├── __init__.py 
│   │    └── test_cstruct.py 
│   ├── LICENSE 
│   ├── MANIFEST.in 
│   ├── mbr 
│   ├── README.md 
│   ├── setup.cfg 
│   └── setup.py 
+0

Почему вы хотите, чтобы сделать это вместо того, чтобы установить его в virtualenv? – geoffspear

ответ

0

Я не знаю, почему вы не установите это в virtualenv, но, учитывая ваш конкретный вопрос, почему же вы не просто делать то, что вы изначально предложить и добавить внешний каталог в PYTHONPATH?

Вы можете сделать это из командной строки:

export PYTHONPATH=$PYTHONPATH:/path/to/outer/cstruct 

или внутри Python:

import sys 
sys.path.insert(0, '/path/to/outer/cstruct') 
+0

Я думаю, что идея заключалась в том, чтобы почти лечить базовый каталог. например, сайт-пакеты, где можно просто добавить его в свой путь к python, и все модули под деревом будут доступны. Может ли sys.path.insert не выполняться в __init__.py в базе? – stgtscc

+0

Да, но тогда вам нужно импортировать этот базовый каталог, чтобы получить этот '__init __. Py' для выполнения. Не уверен, как это помогает. –

+0

Это то, что я изначально изложил - просто добавить основы только в одиночку, но когда я пытаюсь, это не работает. – stgtscc