我的服务器上有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"
答案 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