|
From: | Carlos García |
Subject: | Re: [Fab-user] No hosts found - Fabric execution model: works only on relative imports? |
Date: | Wed, 27 Jan 2016 09:15:43 +0100 |
Hi Alec,
the examples given doesn’t work. Maybe you’re missing something.
env
should be imported from fabric.api
, if not, Python fails with NameError: name 'env' is not defined
Also, the Python path should include foo/
and can/
, so you need to call a python executable from the project root (Or add ROOT_DIRECTORY
to the python path with sys.path.append(ROOT_DIRECTORY)
). For example:
## foo/__init__.py
import sys
import os
sys.path.append(os.path.abspath('.'))
from fabric.api import execute
from can.haz import funtimes
domain = 'localhost'
env.user = 'bar'
env.password = 'foo'
env.hosts = [domain]
execute(funtimes)
And you execute it with: python foo/__init__.py
. And this works.
Regards
2016-01-27 6:21 GMT+01:00 Alec Taylor <address@hidden>:
Whilst this fails:Using Fabric outside a fabfile. `fabric.api.execute` on relative imported functions works.To illustrate, this works:
Importing other installed modules fails with "No hosts found. Please specify (single) host string for connection:"## foo/__init__.pyfrom fabric.api import executefrom bar import funtimesdomain = 'localhost'
env.user = 'bar'
env.password = 'foo'
env.hosts = [domain]execute(funtimes)
## foo/bar.py
from fabric.api import rundef funtimes(): run('hello funtimes')## foo/__init__.pyfrom fabric.api import executefrom can.haz import funtimes
domain = 'localhost'
env.user = 'bar'
env.password = 'foo'
env.hosts = [domain]execute(funtimes)
## can/haz.py
from fabric.api import run
def funtimes(): run('hello funtimes')# also tried
def funtimes2(env):
fabric.api.env = envrun('hello funtimes2')
_______________________________________________
Fab-user mailing list
address@hidden
https://lists.nongnu.org/mailman/listinfo/fab-user
[Prev in Thread] | Current Thread | [Next in Thread] |