我正在使用python3.2运行Django,最近发现该结构不支持Python3。
因此,我创建了第二个虚拟环境(fabric-env)来用尽Fabric。
这是virtualenv的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和Python都足够新(只是为了确保fabric不会试图运行其他Python,我在虚拟环境的内部和外部都运行了此函数)。
错误消息在Google上没有找到...
最佳答案
您尚未导入lcd
。将以下内容添加到文件顶部:
from fabric.context_managers import lcd