2014-07-10 24 views
1

我在我的服務器上有一個Django 1.4.5和一個工作項目。在virtualenv下使用錯誤版本的Django runserver

我用的virtualenv創建一個實例和安裝的Django 1.6.5裏面(pip install Django==1.6.5).

如果我只需運行:

python manage.py runserver 

一切正常,並開始使用Django的服務器1.6.5 但我有一個名爲run_devenv.py的文件,它基本上使用子進程啓動我的整個項目。它啓動服務器這樣的:

def run_devenv(): 
    processes = [ 
    ... 
    ('webserver', subprocess.Popen([PYTHON, 'manage.py', 'runserver', '0.0.0.0:%d' % HTTP_PORT, '--settings', os.environ['DJANGO_SETTINGS_MODULE']])), 
    ... 
    ] 

if __name__ == '__main__': 
    if not os.access(settings.DEVENV_DIR, os.F_OK): 
     setup_devenv() 
    else: 
     run_devenv() 

,由於某種原因它使用的Django 1.4.5,而不是1.6.5。

看起來它使用安裝在系統中的1.4.5並省略了使用1.6.5的virtualenv實例。

有人可以幫忙嗎?

編輯>解決方案: 我的問題是這樣的字符串(我沒有表現出來):

PYTHON = "/usr/bin/python" 

它應該是這樣的:

PYTHON = "path_to_your_virtualenv/bin/python" 
+0

是否可以指定您想要運行的Django版本的路徑? – Deepend

+0

現在我正在搞清楚如何使用一些統一的值,所以我不硬編碼virtualenv的名字,尋找像'sys.argv [0]'或'/ usr/bin/env python' – Oleg

回答

1

您需要調用python二進制內你的virtualenv而不是你的系統之一。從你的代碼看起來像PYTHON是一個指向你的python二進制文件的變量?如果是這樣,你應該只需要改變這樣的:

PYTHON = "/path/to/your/virtualenv/bin/python" 
+0

,這是原因。非常感謝! – Oleg

0

我猜你的腳本run_devenv.py是可執行文件,並具備#!/bin/python頂部的聲明。你可以改變它的Python版本運行腳本或啓動腳本中你的virtualenv:

activate_this = '/path/to/env/bin/activate_this.py' 
execfile(activate_this, dict(__file__=activate_this)) 
+0

是的,這是原因。謝謝你的幫助! – Oleg

0

Python路徑是問題

,如果你使用的Linux的/ OSX下面的命令應該工作,假設你」 ve已激活virtualenv

sudo /path/to/bin/python manage.py runserver 
相關問題