LINUX.ORG.RU

Получить путь к установленному модулю

 , ,


0

1

Здравствуйте.

Есть питоновское приложение (проект на pyramid), сделанное в виде классического пакета с setup.py. И нужно его разместить на сервере, в отдельном virtualenv-е, причем так, чтобы установка шла через setup.py install, но некоторые директории из проекта (статика с картинками) находились в другом месте, в document-root.

Решаю сделать симлинк, т.е. после установки через setup.py install делаю что-то такое:

ln -s /home/user/project/env/lib/python-3.3/site-packages/projectname/static /home/user/project/www/static

Но хочется всё автоматизировать через fabric, и учитывая, что версии питона и пути могут быть разные, хардкодить ничего не хочется.

Пока что вышло что-то такое:

# fabfile.py
# .....
static_path = run('env/bin/python -c "import pkg_resources;print(pkg_resources.resource_filename(\'projectname\', \'static\'))"')
run('ln -s {} {}'.format(static_path, document_root_static))
# ...

Выглядит как-то криво, но работает. Может кто подскажет более красивое решение?

Ответ на: комментарий от zz

Недочитал до сути :) У тебя distutils?

У меня python3 и distribute. Но для python2 будет та же история, в общем-то. Установка через setup.py install. В принципе, можно ставить и через setup.py develop, тогда проект будет разархивирован в указанное место, но мне хочется попробовать решить именно с install.

Как получить код внутри скрипта я знаю, но у меня fabric, который дёргает скрипты удалённо через ssh, и хочется всё сделать его силами. Вот пока ничего, кроме дёрганья питона с pkg_resources через консоль, не вышло.

risenshnobel ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.