2013-11-19 5 views
0

Я ищу способ вызова Fabric из сценария внутри одного из моих пакетов, по существу превращая его в псевдоним для fab -f /path/to/my/installed/package/scripts/fabfile.py.Создание пользовательских исполняемых Fabric

Есть ли стандартный способ сделать это, или я просто позвоню ему из subprocess?

ответ

0

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

В следующем примере я создать небольшой тестовый проект под названием hellofabric с указанным файлом с именем testfab.py (пожалуйста, игнорировать fabfile.py в корневой папке проекта, это происходит от моего питона скрипт начальной загрузки). Вот структура файла.

. 
├── fabfile.py 
├── hellofabric 
│   ├── __init__.py 
│   ├── testfab.py 
│   └── version.txt 
├── hellofabric.egg-info 
│   ├── dependency_links.txt 
│   ├── entry_points.txt 
│   ├── not-zip-safe 
│   ├── PKG-INFO 
│   ├── SOURCES.txt 
│   └── top_level.txt 
├── MANIFEST.in 
├── README.rst 
└── setup.py 

testfab.py содержит следующий код.

import fabric.api as fab 


@fab.task 
def hellofabric(): 
    fab.local("echo Hello from fabric") 

Следующий шаг должен был бы создать DIST файл этого проекта (питон setup.py sdist), и попытаться установить этот файл распределения внутри вашего проекта назначения. Как только я это сделал, я смог выполнить следующее, которое выполнило сценарий.

>>> from hellofabric import testfab 
>>> testfab.hellofabric() 
[localhost] local: echo Hello from fabric 
Hello from fabric 
>>> 

Надеюсь, что вы ищите.

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