Windows 10家庭中文版,Python 3.6.4,uwsgi-2.0.17.tar.gz,壓縮工具-7-zip
提示:請不要和我一樣嘗試,浪費時間,去Linux上玩吧!
幾個小時的安裝經歷
昨天下午學習到將“Django項目部署到Nginx服務器”,此部署除了需要Nginx服務器外,還需要一個和Nginx服務器
進行通信的協議軟件——uwsgi。
可是,經過嘗試,最終沒能成功將uwsgi安裝到Windows 10,而且有網友的博文說uwsgi不支持在Windows 10上安
裝,即,不可以!但是呢,官網和網友的博文都表明可以在Windows上安裝Cygwin,然后在Cygwin環境中安裝。
我以為, 沒有必要繼續嘗試在Cygwin上安裝uwsgi等軟件了,直接安裝一個Linux操作系統(Ubuntu?),然后再嘗
試是最好的,畢竟,最終Django項目是要部署到Linux或UNIX上的。
安裝過程中出現的錯誤
1.pip安裝
Traceback顯示在uwsgiconfig.py的line 8調用os.uname()[0]發現錯誤:
AttributeError: module 'os' has no attribute 'uname'

在IDLE中導入os模塊,使用dir(os)命令進行檢查,的確沒有發現其下有uname屬性(下面是部分截圖):

2.python3 setup.py install安裝(uwsgi離線包)
在使用pip命令無法直接安裝成功之后,即可嘗試下載模塊的離線安裝包,再進行手動下載了。
評論:pip都無法安裝成功,除開沒找到的原因,下載離線安裝包能安裝成功?表示懷疑~
可以從pypi.org網站、uwsgi的Github主頁下載。下圖是pypi.org網站的uwsgi下載頁截圖:

使用7-zip解壓到當前目錄,得到一個uwsgi-2.0.17.tar,再解壓tar文件,得到uwsgi-2.0.17文件夾,然后就可以基於此
文件夾安裝uwsgi了。


再把uwsgi文件夾放到合適的位置(有博文說放到Python的lib/site-packages下,當我認為沒必要,直接放C盤下即可)。
接下來,使用命令行進入uwsgi目錄——里面有一個setup.py文件用來安裝uwsgi的,執行python3 setup.py install命令,結
果,uname的錯誤仍然存在。
不知道該怎么辦,,在百度輸入了錯誤,獲得了解答——參考資料中的window安裝uwsgi 遇到uname完美解決,即打開
uwsgiconfig.py文件進行修改:
-導入platform模塊
-使用platform.uname替換os.uname (總共四個)

再次執行python3 setup.py install命令,結果,還是出錯!這次提示:
Exception: you need a C compiler to build uWSGI
需要一個C語言編譯器,而此時的環境中沒有!
經過網絡搜索,可以安裝一個Cygwin解決此問題。好吧,安裝Cygwin。
Cygwin是什么?從我的使用經歷來看,就是在Windows上模擬了一個Linux的運行環境,更多見官網。

安裝Cygwin:先選擇了一個日本的鏡像(mirror),結果安裝失敗了;后來又選擇了唯一的HK的鏡像(下圖紅框中),安裝成功。

安裝成功:

GCC也有了!(就是我們需要的C編譯器,其實,不用解釋的吧?)

下面,將Cygwin中的編譯器命令添加到Windows的環境變量Path中:

在Windows命令行中再次執行python3 setup.py install命令,失敗,提示了兩個error:
UWSGI_EVENT_IN、UWSGI_EVENT_OUT

那么,在Cygwin中執行python3 setup.py install命令呢?結果還是失敗!

此時,快無招了!
網絡搜索UWSGI_EVENT_IN、UWSGI_EVENT_OUT相關信息,最終發現這兩個宏定義出現在uwsgi的core/event.c源文件中:

一看,繼續網絡搜索,中文的、英文的——主要是stackoverflow,可是,沒有解決方案,而且有些博文就
直接說,不支持在Windows上安裝uwsgi!
或許過一段時間就可以了,不過,這樣重大的消息一定不會被一位Python程序員錯過的,對吧?
放棄這條路吧!去安裝Ubuntu吧!再去Ubuntu上玩Django+Nginx+uwsgi吧!
P.S.
可是,為什么會這樣呢?poll是什么(多年前去了解過,后來,忘記了)?
關於poll的資料,繼續網絡搜索吧!
作者:Ben.Z
無法在Windows上發布Django程序了,不過,還是可以在Windows上測試、練習Django程序的開發的。
還可以通過查看博文學習Nginx+uwsgi的配置的。
那么,Windows上開發的Django程序可以輕松移植到Linux嗎?
看來,還是得把Linux好好學習下才是的!
參考資料:
Django Nginx+uwsgi 安裝配置(菜鳥教程)
uWSGI詳解
windows下python安裝uwsgi (2018-02-28)
Windows7使用nginx+apache部署django項目
