2016-01-13 3 views
0

У меня есть файл ткани в моей локальной системе, который я использую для развертывания кода на удаленном сервере (в виртуальном каталоге) и хочу его протестировать. Определение метода приведено ниже.ткань не получает среду Django

def test_deploy(gitid = '930bfc4'): 
     # manually put the commit id at the end 
     path = '/tmp/testapp/app1/source/demo4' 
     with cd(path): 
      commit_id = 'git fetch https://[email protected]/myaccount/demo4.git/heads/master:https://[email protected]/myaccount/demo4.git/remotes/origin/master/'+gitid 
      # change the settings.py file and update the database 
      run (commit_id) 
      run ('cat .git/FETCH_HEAD') 

     path1 = '/tmp/testvehic/vehic' 
     with cd(path1): 
      run ('pwd') 
      env.activate = 'source /tmp/testapp/app1/bin/activate' 
      run ('python /tmp/testapp/app1/source/demo4/manage.py test')` 

Это показывает, что

ImportError: No module named django.core.management

После некоторого поиска в Google я узнал, что он на самом деле не мое местонахождение Джанго среды.
Мой виртуальный путь среда /tmp/testapp/app1
И исходный код в /tmp/testapp/app1/source/app1/
Когда я бегу команду python manage.py test в терминальном сервере его работать отлично. Как я могу проверить это через ткань?

+1

Stop завязывания активировать вещи, слишком много людей, это неправильно, это сделать вместо : '/ tmp/testvehic/vehicle/bin/python /tmp/testapp/app1/source/demo4/manage.py тест' гарантированно не подлежит; никто не будет смотреть на код и не путать его; легче отлаживать; НИЧЕГО, НО ВЫИГРАЕТ !! :П –

ответ

0

я получил ответ из приведенной ниже ссылке

http://nurupoga.org/articles/deployment-with-fabric-and-virtualenv/

мой фрагмент кода теперь выглядит как этот

VENV_DIR = '/home/rootuser/testvehic/vehic' 
PROJECT_DIR = '/home/rootuser/testvehic/vehic/source/cabsdemo4' 

@contextmanager 
def source_virtualenv(): 
    with prefix('source ' + os.path.join(VENV_DIR, 'bin/activate')): 
     yield 
def test_deploy(gitid = '930bfc4'): 
    # manually put the commit id at the end 
    path = '/tmp/testapp/app1/source/demo4' 
    with cd(path): 
     commit_id = 'git fetch https://[email protected]/myaccount/demo4.git/heads/master:https://[email protected]/myaccount/demo4.git/remotes/origin/master/'+gitid 
     # change the settings.py file and update the database 
     run (commit_id) 
     run ('cat .git/FETCH_HEAD') 
    with settings(warn_only=True): 
     with cd(PROJECT_DIR): 
      with source_virtualenv(): 
       run('pip install -r requirements.txt') 
       run('python manage.py test')