指定端口时出现Django runserver错误

Dar*_*ech 16 django

我最近习惯于在我的django项目中执行以下操作,以便我可以在各种操作系统(即非Linux)上测试bowser兼容性:

$ sudo ./manage.py runserver 0.0.0.0:80
Run Code Online (Sandbox Code Playgroud)

这允许我通过网络上的任何机器访问项目.

但是,我只是设置了一台新机器,此命令发出以下错误:

Traceback (most recent call last):
   File "manage.py", line 8, in <module>
     from django.core.management import execute_from_command_line
ImportError: No module named django.core.management
Run Code Online (Sandbox Code Playgroud)

我知道django在查找模块时遇到了问题,我不明白的是那个简单的旧模块:

$ sudo ./manage.py runserver
Run Code Online (Sandbox Code Playgroud)

运行很好.我在这里所做的一切都在改变港口吗?当然,它在过去运作良好.

注意
1.我正在使用Django 1.4
2.我在virtualenv和系统上尝试过,我得到了相同的结果.
3.我没有安装django系统(仅限于virtualenvs)

任何帮助将非常感激.

Pau*_*ine 25

我猜sudo命令将在超级用户上下文中运行该进程,而超级用户上下文缺少virtualenv设置.

您可以尝试显式调用virtualenv中的python二进制文件,例如:

sudo $(which python) manage.py runserver 0.0.0.0:80
Run Code Online (Sandbox Code Playgroud)

制作一个shell脚本来设置virtualenv并调用manage.py runserver,然后改为sudo这个脚本.

#!/bin/bash
source /home/darwin/.virtualenvs/foo/bin/activate
cd /path/to/project/foo
python manage.py runserver 0.0.0.0:80
Run Code Online (Sandbox Code Playgroud)

替换/home/darwin/.virtualenvs/foo为您的实际virtualenv /path/to/project/foo的根和项目的根.


xyr*_*res 7

这是另一个解决方案,而不是创建shell脚本,只需指定要在命令中使用哪个python可执行文件:

假设你的virtualenv容器被调用.virtualenvs并且myproject在其中调用了一个env ,这是你必须编写的命令:

$ sudo ~/.virtualenvs/myproject/bin/python manage.py runserver 0.0.0.0:80
Run Code Online (Sandbox Code Playgroud)