2016-05-03 2 views
7

Я знаю, как устанавливать пакеты в Anaconda с помощью conda install, а также как создавать пакеты, которые находятся на PyPi, который описан в manual.Anaconda: Постоянно включают внешние пакеты (например, в PYTHONPATH)

Но как я могу постоянно включать пакеты/папки в Anaconda, например. с кодом, над которым я сейчас работаю?

Мой текущий подход заключается в использовании sys:

import sys 
sys.path.append(r'/path/to/my/package') 

, который не очень удобно.

Любые подсказки?

Заранее благодарен!

ответ

10

Я нашел два ответа на мой вопрос в Anaconda forum:

1.) Поместите модули в в сайт-пакетов, т.е. каталог $HOME/path/to/anaconda/lib/pythonX.X/site-packages, который всегда на sys.path. Это также должно работать, создавая символическую ссылку.

2.) Добавить файл .pth в каталог $HOME/path/to/anaconda/lib/pythonX.X/site-packages. Это можно назвать чем угодно (он должен заканчиваться .pth). Файл .pth - это просто листинг с полным списком имен каталогов, который будет добавлен к вашему пути при запуске Python.

Оба работают просто, и я пошел на второй вариант, поскольку он более гибкий.

В любом случае, спасибо!

2

Предпочтительным решением было бы создать собственный пакет conda (информация here).

Другим решением было бы создать связь между вашим каталогом пакетов и любым каталогом в sys.path. Таким образом, когда вы запрашиваете python для импорта своего пакета, anaconda будет искать в своих различных каталогах sys.path и будет читать ссылку на ваш пакет, как если бы этот пакет был в одном из каталогов sys.path.

Ссылка на каталог может быть легко выполнена с помощью команды ln (link_name). В качестве примера:

ln -s /path/to/my/package /path/to/anaconda/lib/python2.7/site-packages/ 

Вышеупомянутая ссылка позволит вам импортировать пакет в среду по умолчанию anaconda из любой директории. Это не повлияет ни на одну из других сред.

Если вы хотите добавить пакет к определенной среде (например - «myenv») в анаконде, вы можете связать пакет с одним из путей SYS этой конкретной окружающей среды:

ln -s /path/to/my/package /path/to/anaconda/env/myenv/lib/python2.7/site-packges/ 

Обратите внимание на следующее:

  • Ссылка на каталог вашего пакета на путь sys, а не перемещение каталога пакета на путь sys, позволяет сохранить ваш пакет в выбранном вами каталоге.
  • Флаг -s создает мягкую ссылку (очень похожую на ярлык).Если вы переместите каталог своего пакета, ссылка не сработает. Запуск ln без флага -s генерирует жесткую ссылку (например, зеркальную копию), на которую не будет влиять перемещение (или даже удаление ..) каталога пакетов. Обсуждаются плюсы и минусы софт-ссылок и жестких ссылок here

  • Пользователи Windows должны использовать mklink. Для информации смотрите here.

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