最近在折腾Django的WSGI应用,虽然Django自带的runserver很方便,但是对于复杂的功能它就无能为力了。
首先在Windows上遇到坑了,然后在windows10自带的Ubuntu遇到坑了,最后在虚拟机上总算解决了。
从以前的文章Django笔记《Django 学习笔记(二)第一个网页》可以看出我用的是windows10系统中的cmd来进行Django操作的,由于gunicorn应用是在unix系统中运行的,强制性在win平台运行就出错了。
1.windows遇到坑:
首先 cmd中输入:pip3 install gunicorn ,安装成功后,切换到项目目录(G:/Django/hello),具体操作是先切换到G盘,直接输入G:,接着输入cd Django\hello 就会出现 G:\Django\hello>这种情况。然后运行gunicorn,在Django项目中格式是:gunicorn yourproject.wsgi [-b 127.0.0.1.8000],括号内为选填,其他命令参数可以发送 gunicorn -h得到帮助文档。我这边的项目是hello,所以我的命令操作是:gunicorn hello.wsgi ,然后呢,出错ModuleNotFoundError: No module named 'pwd',没有pwd模块,好吧,没有找呗。找到后的代码贴在下面了,把找到的pwd.py放进了python3的安装目录D:\Program Files\Python\Python36\Lib,接着我们再运行gunicorn hello.wsgi ,结果又出错了:AttributeError: module 'socket' has no attribute 'AF_UNIX' ,然后我又在网上找,gunicorn是unix系统中的应用,将其用在windows上兼容性是个大大的问题,如果按照错误一个个解决将是一个庞大的工程,所以转战unix系统,windows在gunicorn上弃坑。
G:\Django\hello>gunicorn hello.wsgi Traceback (most recent call last): File "d:\program files\python\python36\lib\runpy.py", line 193, in _run_module_as_main "__main__", mod_spec) File "d:\program files\python\python36\lib\runpy.py", line 85, in _run_code exec(code, run_globals) File "D:\Program Files\Python\Python36\Scripts\gunicorn.exe\__main__.py", line 5, in <module> File "d:\program files\python\python36\lib\site-packages\gunicorn\app\wsgiapp.py", line 10, in <module> from gunicorn.app.base import Application File "d:\program files\python\python36\lib\site-packages\gunicorn\app\base.py", line 12, in <module> from gunicorn import util File "d:\program files\python\python36\lib\site-packages\gunicorn\util.py", line 13, in <module> import pwd ModuleNotFoundError: No module named 'pwd'