从bash脚本运行“python manage.py runserver”

7 投票
2 回答
11152 浏览
提问于 2025-04-16 19:41

我想通过一个bash脚本来运行 "python manage.py runserver"。

首先,如果我想在终端里运行 "python manage.py runserver &",但是这样并不奏效。我在这个链接(https://code.djangoproject.com/changeset/16327)找到了解决办法。在终端里手动运行 "python manage.py runserver &" 是可以正常工作的。可是我在bash脚本里加上 "python manage.py runserver &",但服务器却没有启动。

Error:
File "/usr/local/lib/python2.7/dist-packages/Django-1.3-py2.7.egg/django/utils/autoreload.py", line 137, in main
    reloader(main_func, args, kwargs)
  File "/usr/local/lib/python2.7/dist-packages/Django-1.3-py2.7.egg/django/utils/autoreload.py", line 110, in python_reloader
    reloader_thread()
  File "/usr/local/lib/python2.7/dist-packages/Django-1.3-py2.7.egg/django/utils/autoreload.py", line 89, in reloader_thread
    ensure_echo_on()
  File "/usr/local/lib/python2.7/dist-packages/Django-1.3-py2.7.egg/django/utils/autoreload.py", line 77, in ensure_echo_on
    attr_list = termios.tcgetattr(fd)
termios.error: (25, 'Inappropriate ioctl for device')

2 个回答

0

我用别名来启动Django服务器。也许这对你有帮助)

只需要在你的 ~/.bashrc~/.profile 文件的最后加上 alias django_serve="python manage.py runserver &" 这行代码。

你也可以创建一个 .bash_aliases 文件,把你的别名放到这个文件里,然后在执行任何操作之前运行这个文件,比如:


if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

6

问题可能是因为hudson没有以你的用户身份运行...你可以运行

source /home/your_user/.bashrc && django_serve 

来让它以那个别名运行,但我觉得你可能需要切换用户

-- 或者 --

让hudson从它自己的源代码目录运行开发服务器

编辑: 看了你的错误信息,我觉得这样可能会解决你的问题:

不要使用

python manage.py runserver

试着添加 --noreload 这个参数来禁用自动重载功能

python manage.py runserver --noreload

撰写回答