Windows 安裝uWSGI:不可行
提示:請不要和我一樣嘗試,浪費時間,去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的錯誤仍然存在。
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好好學習下才是的!
參考資料:
標籤:安裝 技術分享 blog 通過 get dir 主頁 compiler 位置
原文地址:https://www.cnblogs.com/luo630/p/9031756.html