2015-07-04 61 views
3

我在Ubuntu Server 14.04上。Pypy 3.2枕頭問題

我想用pypy 3.2來運行一個django應用程序。

但是,每當我嘗試pypy3 manage.py runserver 0:8000,它說: (fields.E210)由於未安裝Pillow,因此無法使用ImageField。 提示:獲取枕頭https://pypi.python.org/pypi/Pillow或運行命令「pip install Pillow」。

但是,如果我嘗試安裝枕頭: pypy3 -m PIP安裝枕頭

它說: 需求已經跟上時代的:枕頭在/usr/local/lib/python3.4/dist-包/枕2.9.0-py3.4-Linux的x86_64.egg

然後我下載的源和嘗試: pypy3的setup.py安裝

它說: 屬性錯誤install_layout

我不知道該怎麼做!

_ <

回答

2

您應該創建pypy3爲你解釋一個適當的virtualenv牛逼運行你的Django安裝 - 的的virtualenv內,PIP應該只是工作兩個Django和枕頭 - 不奇怪的動作像pypy3 -m pip它們會像你所擁有的那樣受到破壞。

要創建的virtualenv在其內部默認的Python解釋器pypy3只是做virtualenv -p pypy3 myprojectdir - 與source myprojectdir/bin/activate激活它 - 懶惰的類型有virtualenv wrapper它創建更加快捷鍵。從那裏開始,pip install任何東西都會在這個目錄中安裝,而不會從任何其他Python中弄亂(或檢查)你的系統包。

這就是擁有一個理智的環境的方式 - 但它會讓你只是想超越現有的東西的邊緣 - 在枕頭的互聯網上提到與Pypy兼容(當然,與python3) - 但我找不到一個關於pypy3運行枕頭的提及。我可以通過在我的Linux系統上安裝pypy3-devel並手動設置CFLAGS變量 - (我在這裏使用Fedora - 在Ubunut上你應該有一個pypy3-dev包)。但即使它確實建立,它確實無法在pypy上運行,提高ImportError: unable to load extension module 'PIL/_imaging.pypy3-24.so': PIL/_imaging.pypy3-24.so: undefined symbol: PyExc_SystemError; (在fedora 22上設置CFLAGS=-I/usr/lib64/pypy3-2.4.0/include/檢查你的pypy3-dev包,看看這些包含文件在Ubuntu的哪個位置)。

TL; DR對於您的項目,可以使用pypy2.x或常規cPython3.4(當然這是首選) - 這些日子中的一個依賴項將迎頭趕上。無論哪種方式,Django不應該從Pypy的JIT中獲益太多 - 重負載的Web服務器將不得不處理數據庫連接的可伸縮性(而不是Python)和良好的緩存(它可以在Python上的層上正確配置 - 請參閱「清漆「)。如果你的網站因爲沒有使用Pypy而遭受攻擊的請求有很多處理,可以考慮使用celery/RPC在另一個進程中運行瓶頸算法 - 然後編寫該程序的一部分以使用Pypy/Cython/pure C.

+0

https://packaging.python。org/en/latest/installing.html#creating-virtual-environments –

+0

非常感謝,jsbueno !!! –

+0

Django肯定會在這裏進行大量的處理。但有趣的派對是我剛開始的網站。我所擁有的是一個基本模板和一個頁腳模板,它可以查詢並遍歷其內容,並在頁腳中填入'最後4個添加的產品'。它無法忍受20req /秒。 數據庫處理%小於0.5%。而且似乎一個簡單的頁面訪問暫時需要10%的處理。這不會發生在我做同樣的事情的PHP頁面,查詢數據庫,然後在顯示內容的網頁上迭代。 我使用nginx與uwsgi。 –