LCD上下文切换器在Fabric中无法工作
我正在用Python3.2运行Django,最近发现fabric不支持Python3。
所以我创建了一个新的虚拟环境(fabric-env),专门用来运行fabric。
这是我在虚拟环境中运行fab --version的输出:
Fabric 1.9.0
Paramiko 1.14.0
python --version
Python 2.7.3
我的fab文件长这样(只包含相关的行):
from fabric.api import local
def deploy(branch_name):
with lcd('/var/www/finance'):
local('git pull /home/user1/dev/' + branch_name)
local('/var/www/finance/finance-env/bin/python3 manage.py test corefinance')
local('/var/www/finance/finance-env/bin/python3 manage.py schemamigration corefinance --auto')
local('/var/www/finance/finance-env/bin/python3 manage.py migrate corefinance')
local('sudo service apache2 restart')
当我运行这个部署函数时,出现了以下错误:
File "/var/www/finance/fabfile.py", line 19, in deploy
with lcd('/var/www/finance'):
NameError: global name 'lcd' is not defined
fabric的文档说这个函数应该是可以用的。看起来fabric和Python的版本都足够新(为了确保fabric不是在不同的Python环境下运行,我在虚拟环境内外都运行了这个函数)。
在谷歌上没有找到这个错误信息的相关内容...
1 个回答
2
你还没有导入 lcd
。请在你的文件顶部添加以下内容:
from fabric.context_managers import lcd