2014-06-20 3 views
1

저는 Python3.2로 Django를 실행 중이며, 최근에이 패브릭이 Python3을 지원하지 않는다는 것을 발견했습니다.lcd 컨텍스트 스위처가 fabric에서 작동하지 않습니다.

그래서 패브릭을 실행하기 위해 두 번째 가상 환경 (fabric-env)을 만들었습니다.

가 여기에 VIRTUALENV에서 팹 --version 출력입니다 :

Fabric 1.9.0 
Paramiko 1.14.0 

파이썬 --version 내 팹 파일은 다음과 같습니다

Python 2.7.3 

(에만 관련 라인) :

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 

직물 설명서에이 기능을 사용할 수 있다고 나와 있습니다. 패브릭과 파이썬 모두 최근 버전입니다 (단지 파이버가 다른 파이썬에서 벗어나지 않도록하기 위해 가상 환경 내외부에서이 기능을 실행했습니다). 없음 오류 메시지가 구글에 명중

은 ...

답변

1

당신은 lcd를 가져 오지 않은. 파일 상단에 다음을 추가하십시오.

from fabric.context_managers import lcd