成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

從一件小事看Python

開發 前端 后端
近日用webpy開發了一個小Web應用,用到了PIL(一個圖形庫)。在把它部署到正式的Linux服務器之前,我覺得有必要在Windows上先“仿真”測試一下,用Windows+Apache+WSGI+webpy+PIL環境測試一下這個Web應用。但不幸的是,這個測試環境最終沒有搭建成功。

一件關于Python開發的小事,折騰了一天還是失敗了,是Python難搞還是有別的原因?且看……

近日用webpy開發了一個小Web應用,用到了PIL(一個圖形庫)。在把它部署到正式的Linux服務器之前,我覺得有必要在Windows上先“仿真”測試一下,用Windows+Apache+WSGI+webpy+PIL環境測試一下這個Web應用。但不幸的是,這個測試環境最終沒有搭建成功。

我的Windows開發環境下有Python2.5/2.6/2.7三個版本。我一直使用2.5作為默認的Python版本。那個Web應用也是在2.5下開發的。而且我的Linux服務器上也用2.5。

我遇到的***個問題是:Windows上WSGI只有兩個官方binary,分別對應Python2.6和2.7,沒有2.5。對我來說,如果要維持一貫的Python環境(包括服務器部署環境),就必須自己編譯WSGI的Python2.5版本。這件事非常麻煩:首先是必須使用跟Python2.5的binary相同的編譯器——VC2003(這種古董我都沒地方去找,我機器上只有VC2010)。其次還要找到所有相關的(且正確的)C鏈接庫,如libhttpd.lib等。如果我使用官方的WSGI binary,我只能把環境轉換到高版本的Python,雖然這仍然意味著不少工作——包括服務器環境的整體升級等等,但我考慮再三,決定還是升級Python。

但我馬上就遇到了第二個問題:PIL庫的官方binary在Python2.7上不能工作!在加載_imagingft時會報告錯誤“ImportError: DLL load failed”。用depends工具檢查發現缺少MSVCR90.dll,就到MS的網站上下載了VC++ 2008的 Redistributable Package。但安裝后問題依舊。抓狂!其后一度研究了自行編譯PIL,發覺這事兒也不簡單,遂放棄,繼續找問題原因。***還真讓我找著了https://bitbucket.org/effbot/pil-117/issue/1/windows-build-of-_imagingft-module-fails-to。簡單說就是:PIL官方binary編譯有問題:_imagingft.pyd(動態鏈接庫)鏈接的是MSVCR90.dll的DEBUG版本(話說這個問題存在一年以上了,官方就不管管嗎)!所以即使安裝了VC2008的Redistributable Package也沒用(DEBUG版本不在發行版中)!解決辦法就是用二進制編輯器修改嵌在DLL里的manifest(這個辦法我覺得較危險),或者用mt.exe工具從DLL導出manifest,修改后再導入DLL。mt.exe的用法可參考MSDN文檔http://msdn.microsoft.com/en-us/library/aa375649(v=vs.85).aspx。

解決了這兩個問題,大半天過去了。就在我以為萬事俱備的時候,第三個問題出現了,并且一劍封喉:在Apache的WSGI環境下PIL還是可恥的加載失敗了——在import _imaging的時候,報告“ImportError: DLL load failed”。我再次抓狂了:我打開Python控制臺,直接import imaging,沒有問題。那么問題再哪兒?從日志上看,Python及其庫的路徑是沒問題的。那么問題再哪兒?問題可能在這兒:http://groups.google.com/group/modwsgi/browse_thread/thread/59612820615eceaf,Graham(WSGI的作者)在這個帖子里說:

That is, Python 2.6+ links to newer MS C runtime library that Apache doesn’t and C extension modules which are somehow dependent on the newer MS C runtime library will not load properly.

就是:Apache鏈接的C動態庫與Python2.6+不同,因此后者的C擴展庫(比如_imaging)不能工作在前者的環境里。解決的辦法是:

If I am sort of right, the solution may be to relink mod_wsgi.so for Windows with dependency on new MS C runtime library.

就是要重新編譯WSGI!問題又回到了原點!

從這件事情上,我看到的是:Python在Windows上問題重重,考慮到數不清、理還亂的C運行時庫問題以及復雜的編譯環境。相對而言,Linux的情況要好很多:借助于方便的安裝包功能,即使需要編譯安裝的Python庫也比較容易處理(BUG也比Windows要少)。

后記:

在Linux服務器上,我的Python+WSGI+Apache的環境還算順利,但是Windows上做相同的事情看來難很多。但是應用的開發、測試需要一個同實際相當的環境,如果在Windows上開發、測試時用簡易Web服務器,部署時采用Apache+WSGI,顯然是不大合適的。那么,最終的解決方式,看來就是在Linux上做開發。不過要我舍棄經營多年的Windows,仍然不是一件輕易的事情。

原文鏈接:http://www.nearby5.com/2011/06/29/python-in-my-view/

【編輯推薦】

  1. 分享兩個Python web框架:Django&Tornado
  2. Python高手是如何練成的
  3. Python入門之你必須了解的實用技巧
  4. Python入門之你必須了解的基礎知識
  5. Python如何備份目錄及目錄下的全部內容
責任編輯:陳貽新 來源: nearby5.com
相關推薦

2010-10-26 10:54:51

周鴻祎

2015-06-12 10:01:25

程序員代碼

2021-12-06 13:54:05

全息數據存儲存儲數據存儲

2013-07-08 16:00:58

OpenFlow軟件定義網絡SDN

2021-06-01 11:18:14

云計算機密云云安全

2012-09-06 09:57:34

Saas云安全云計算

2020-11-26 06:48:51

限流擴容java

2020-06-11 21:46:05

個性化醫療保健物聯網IOT

2021-10-18 05:42:23

代碼編碼開發

2022-07-22 09:37:26

BunWebpackJavaScript

2018-02-05 08:43:57

2022-06-02 14:32:36

加密貨幣比特幣以太坊

2018-07-03 16:00:25

無服務器云計算公共云

2021-04-20 10:06:57

微軟Nuance公司人工智能

2017-04-28 15:49:43

2023-07-24 14:18:04

數據中心綜合布線

2016-01-22 11:51:36

測試浪費時間

2018-09-27 12:34:33

物聯網汽車工業IOT

2025-04-07 11:55:58

2017-06-22 15:55:57

運維企業FreeWheel
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕不卡在线观看 | 亚洲天堂久久 | 精品乱码一区二区三四区视频 | 午夜精品91| 免费日韩av | 黑人精品欧美一区二区蜜桃 | 日日操视频 | 成人免费视频网站在线观看 | 永久精品 | 国产一区在线视频 | 91精品国产麻豆 | 欧美激情在线精品一区二区三区 | 欧美日韩亚洲国产 | 欧美二区在线 | 成人在线中文字幕 | 日韩欧美国产一区二区 | 亚洲第一在线 | 免费激情| 日本色婷婷 | 超碰成人免费 | 色桃网 | 中文字幕在线网 | 中文字幕日韩av | 国产精品久久久久久久白浊 | 成人午夜精品 | 日韩免费一区二区 | 中文字幕一区二区三区四区五区 | 午夜精品一区二区三区在线视 | h视频在线免费 | 五月综合激情婷婷 | 伊人二区 | 日韩超碰在线 | 久草在线 | 国产免费一区二区三区 | 亚洲女人天堂网 | 一区二区三区免费 | 亚洲一级在线 | 夜夜操av | 三区在线| 在线视频91| 午夜精品一区 |