使用错误版本的virtualenv下的Django runserver

时间:2014-07-10 10:38:34

标签: python django virtualenv

我的服务器上有Django 1.4.5和一个正在运行的项目。

我使用 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"

3 个答案:

答案 0 :(得分:1)

您需要在virtualenv中调用python二进制文件而不是系统文件。从您的代码看起来PYTHON是一个指向您的python二进制文件的变量?如果是这样,你应该像这样改变它:

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

答案 1 :(得分:0)

我猜您的脚本run_devenv.py是可执行的,并且在顶部有一个类似#!/bin/python的声明。您可以更改哪个Python版本运行脚本或在脚本中激活virtualenv:

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

答案 2 :(得分:0)

python路径是问题

如果您正在使用linux / os,则以下命令应该可以正常工作,假设您已经激活了virtualenv

sudo /path/to/bin/python manage.py runserver