2013-08-01 3 views
3

У меня есть локальный git repository на моей машине, скажем, под /develop/myPackage.
В настоящее время я разрабатываю его как пакет python (приложение Django), и я хотел бы получить к нему доступ из моего локального virtualenv. Я попытался включить свой путь в мой PYTHONPATH (я на Mac)Доступ к Пакету Python из локального репозитория git

export PATH="$PATH:/develop/myPackage" 

каталог уже содержит __init__.py в пределах его корня и внутри каждого подкаталога. Независимо от того, что я делаю, но я не могу заставить его работать, python не увидит мой пакет.

Альтернативы:

  • Нажмите мое локальное изменение в GitHub и установить пакет в моем virtualenv оттуда с pip
  • Активировать мой virtualenv и установить пакет вручную с python setup.py install

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

Я что-то не так? Вы предложите лучшее решение?

+1

Вы утверждаете, что устанавливаете 'PYTHONPATH', но ваш пример устанавливает' PATH'. Это не одно и то же. –

+0

Как я знаю на Mac PYTHONPATH env. переменная устанавливается через переменную PATH. Возможно, я ошибаюсь, жестко. – Leonardo

ответ

7

Установите его в editable mode с локального пути:

pip install -e /develop/MyPackage 

Это на самом деле Символические ссылки пакет в пределах вашего virtualenv, так что вы можете держать на devving и тестирования.

+0

Технически оба ответа верны, но это именно то, что я искал! – Leonardo

3

В приведенном выше примере используется PATH, а не PYTHONPATH. Как правило, путь поиска, используемый питона частично основывается на переменной PYTHONPATH окружения (PATH имеет мало пользы для этого случая.)

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

export PYTHONPATH=$PYTHONPATH:/develop/myPackage 

Хотя на самом деле, вы, вероятно, хотите, чтобы это было ., указывающий на каталог, который содержит пакет (так что вы можете сделать «импорт MyPackage», а не импортировать вещи в пакет, который, как говорится, вы, вероятно, хотите:

export PYTHONPATH=$PYTHONPATH:/develop/ 

Эталонные питон документы здесь для получения дополнительной информации о Модуль Python/путь поиска пакета: http://docs.python.org/2/tutorial/modules.html#the-module-search-path

По умолчанию Python использует пакеты, в которых он был установлен, по мере того как это путь по умолчанию, и в результате PYTHONPATH не работает в среде.

+0

Прежде всего PYTHONPATH на Mac - пустая переменная. Я думаю, что все настроено с использованием переменной PATH. Выполнение поиска в Google. У меня есть противоречивые мнения, которые не могут использовать PATH или PYTHONPATH. В любом случае я пробовал оба, я могу экспортировать и получить доступ к обеим переменным, но я не могу импортировать свой пакет. Я попытался импортировать его или активировать и дезактивировать свой virtualenv, не повезло. – Leonardo

+0

Как указал TheBigC, вы неправильно устанавливаете PYTHONPATH. –

+0

Спасибо, мне удалось заставить его работать с использованием переменной PYTHONPATH.Я тоже был в глубине. Экспорт, например '/ my_projects/my_django_app/my_package' вещи не сработал, но экспорт'/my_projects/my_django_app' вещей действительно сработал. Я смущен, потому что 'my_django_app' не имеет' __init __. Py' в своем корне (у него есть my_package). И я заставляю его работать с помощью 'import my_package'. Наверное, я пропустил шаг здесь. – Leonardo

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