Django在虚拟环境下运行错误版本的runserver
我在服务器上安装了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。
有人能帮我解决这个问题吗?
编辑 > 解决方案: 我的问题出在这个字符串上(我没有展示出来):
PYTHON = "/usr/bin/python"
它应该是这样的:
PYTHON = "path_to_your_virtualenv/bin/python"
3 个回答
0
我想你的脚本 run_devenv.py
是可以执行的,并且在最上面有类似 #!/bin/python
的声明。你可以选择更改运行这个脚本的Python版本,或者在脚本里激活你的虚拟环境:
activate_this = '/path/to/env/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
0
问题出在Python的路径上。
如果你使用的是Linux或Mac系统,下面这个命令应该可以用,前提是你已经激活了虚拟环境。
sudo /path/to/bin/python manage.py runserver
1
你需要在你的虚拟环境中调用python程序,而不是使用系统自带的那个。从你的代码来看,PYTHON
是一个指向你python程序的变量,对吧?如果是这样的话,你只需要像下面这样修改它:
PYTHON = "/path/to/your/virtualenv/bin/python"