У меня на самом деле нет полного решения проблемы, но вам нужно будет начать использовать пакет 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
>>>
Надеюсь, что вы ищите.