第一部分 用戶(hù)指引

文檔的這一部分解釋了Kyy設(shè)計(jì)背后的基本思想以及為什么要使用它。接著繼續(xù)討論架構(gòu),并展示如何在短時(shí)間內(nèi)使用這個(gè)框架創(chuàng)建驚人的應(yīng)用程序。


第一章 安裝

我們盡量不重蹈覆轍,而是把創(chuàng)新的東西推向市場(chǎng)。因此,我們專(zhuān)注于自己的代碼,并在可能的情況下使用預(yù)先存在的、高質(zhì)量的第三方庫(kù)。

為了支持Kivy提供的完整、豐富的特征集,需要其他幾個(gè)庫(kù)。如果你不使用特定的功能(例如視頻播放),不需要其他相應(yīng)的依賴(lài)庫(kù)。

但是Kivy還是需要一種依賴(lài)庫(kù),那就是Cython。

此外,還需要Python 2 .x(2.7<x<3)或3 .x(3.3 <=x)解釋器。如果你想啟用
諸如窗口(即打開(kāi)窗口)、音頻/視頻播放或拼寫(xiě)校正等特性,附加功能的依賴(lài)關(guān)系必須可用。對(duì)于這些,我們分別推薦SDL2、Gstreamer 1.x 和 PyEnchant。

其他可選庫(kù)(相互獨(dú)立)是:

  • OpenCV 2.0 用于攝像機(jī)輸入
  • Pillow 用于圖片和文本渲染
  • PyEnchant 用于拼寫(xiě)校正

但是,不要對(duì)這些依賴(lài)感到驚慌!
我們不希望你自己安裝所有這些東西。相反,我們創(chuàng)造了漂亮的便攜式可以直接使用的包,它們已經(jīng)包含了平臺(tái)的必要包。我們只想讓您知道,默認(rèn)值還有其他選擇,并給您一個(gè)Kivy內(nèi)部使用內(nèi)容的概述。

1.1 依賴(lài)

以下是Kivy需要運(yùn)行的列出的依賴(lài)項(xiàng),并且在特定版本中有問(wèn)題,導(dǎo)致影響了我們的核心功能,Kivy要么不編譯,要么會(huì)拋出異常錯(cuò)誤。

1.1.1 Cython

Kivy1.10.1.Dev0 至少需要 Cython版本0.23,并已通過(guò)0.27.3測(cè)試。往后的版本可能可以工作,但因?yàn)樗鼈儧](méi)有被測(cè)試,所以無(wú)法保證。目前 0.27,0.27.2版本Cython有已知的問(wèn)題,不能用于Kivy

已知問(wèn)題:

  • Kivy依賴(lài)的Cython 0.27 版本 聲明錯(cuò)誤導(dǎo)致 1.10.0的Kivy會(huì)發(fā)生編譯錯(cuò)誤。

不支持:

  • Kivy依賴(lài)的Cython 0.27 ~ 0.27.2版本 不能用于Python 3.4(帶有MinGWPy)編譯,因?yàn)槭褂昧宋磳?dǎo)出的編譯期間的符號(hào)。有關(guān)更多細(xì)節(jié),請(qǐng)參見(jiàn)此問(wèn)題

1.1.2 穩(wěn)定版本

最新的穩(wěn)定版本可以在Kivy官方網(wǎng)站上找到下載下載。請(qǐng)參考特定平臺(tái)的安裝說(shuō)明。

1.1.2.1 在Window平臺(tái)安裝

從1.91開(kāi)始,在現(xiàn)有的Python安裝中,我們?yōu)镵ivy 提供二進(jìn)制wheel及其所有依賴(lài)項(xiàng)。
我們也提供了每夜由Kivy 主干構(gòu)建的版本。具體內(nèi)容可以查看每夜Wheel版本的安裝相關(guān)內(nèi)容。也可以查看從以前Kivy分發(fā)包中升級(jí)相關(guān)文檔。如果將Kivy安裝到修改過(guò)的位置,也可以的查看文檔安裝Kivy到修改的位置相關(guān)文檔。

注意:對(duì)于Python 版本號(hào) 小于 3.5,我們使用MinGW編譯器。但是,對(duì)于Windows上的Python 3.5 以后的版本,目前只支持MSVC編譯器,因?yàn)镻ython關(guān)于MinGW的問(wèn)題4709。一般來(lái)說(shuō),這和使用預(yù)編譯的Wheel時(shí),這不會(huì)有什么區(qū)別。

使用Kivy需要Python。Python的多個(gè)版本可以共存,但Kivy需要在你想使用它的每個(gè)python版本中安裝好Kivy。

安裝
安裝了Python以后,打開(kāi)命令行窗口,通過(guò)輸入python --verison 確保python可以使用。接著做以下操作:

  1. 確保你有最新的 pipwheel
python -m pip install --upgrade pip wheel setuptools
  1. 安裝依賴(lài),(跳過(guò) gstreamer (120MB)安裝步驟) 如果你不需要的話(huà)。查看Kivy的依賴(lài)
python -m pip install docutils pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glew
python -m pip install kivy.deps.gstreamer

注意:如果在安裝過(guò)程中遇到內(nèi)存錯(cuò)誤,請(qǐng)?jiān)趐ip install 后添加一個(gè)選項(xiàng) -no-cache-dir。

對(duì)于Python 3.5,我們提供額外的angle,可以用來(lái)代替glew,安裝:

python -m pip install kivy.deps.angle
  1. 安裝Kivy
python -m pip install kivy
  1. (可選)安裝Kivy案例
python -m pip install kivy_examples

這些示例安裝在Python安裝的根目錄下的share目錄中。
這樣就是全部的內(nèi)容了,你可以在python中 import kivy 跑起來(lái)已經(jīng)安裝過(guò)的基礎(chǔ)案例程序。

python share\kivy-examples\demo\showcase\main.py

注意:如果遇到任何權(quán)限被拒絕的錯(cuò)誤,請(qǐng)嘗試以管理員的身份打開(kāi)命令行提示符,然后再試一次。

什么是wheels、pip 和 wheel 呢?
在python中,可以使用Python的包管理器 Pip 安裝一些類(lèi)似Kivy的包。有些包例如Kivy如果采用源代碼安裝的方式還需要額外的操作步驟,例如編譯。wheels(擴(kuò)展名是.whl)是一種已經(jīng)預(yù)編譯好的發(fā)布包,它需要額外的步驟安裝。

當(dāng)在PyPI上托管時(shí),使用PIP安裝一個(gè)wheels,例如:

Python -m pip install Kiy

當(dāng)下載好wheels文件,想直接安裝的時(shí)候,使用方式 python -m pip install wheel_file_name ,例如:

python -m pip install C:\Kivy-1.9.1.dev-cp27-none-win_amd64.whl

每夜wheels安裝

警告:警告:在開(kāi)發(fā)過(guò)程中使用最新開(kāi)發(fā)版本可能有風(fēng)險(xiǎn),你可能會(huì)遇到問(wèn)題。如果您遇到任何錯(cuò)誤,請(qǐng)向我們反饋。

kivy 的wheels文件 在每次Kivy主分支代碼倉(cāng)庫(kù)的提交都會(huì)進(jìn)行版本的構(gòu)建,可以從這里獲取。要是他們,而不是采用 python -m pip install kivy,我們反而會(huì)采用安裝以下內(nèi)容中的某一個(gè):

  • Python 2.7, 32bit
  • Python 3.4, 32bit
  • Python 3.5, 32bit
  • Python 3.6, 32bit
  • Python 2.7, 64bit
  • Python 3.4, 64bit
  • Python 3.5, 64bit
  • Python 3.6, 64bit
  1. 執(zhí)行上述安裝部分的步驟1和2。
  2. 為你的系統(tǒng)安裝正確的wheels文件
  3. 用Python -m pip wheel_name,其中wheel_name為重命名文件,然后添加DEP到PATH變量。

Kivy的案例已經(jīng)從它內(nèi)核程序進(jìn)行了分離。這些案例程序在一個(gè)單獨(dú)的wheel里面(適用于Python 2.x 和Python 3.x ):

  • Kivy examples

Kivy的依賴(lài)
我們分別為Kivy及其依賴(lài)提供wheels,所以需要的依賴(lài)才被安裝。依賴(lài)項(xiàng)被提供為Kivy.deps的可選子包,例如kivy.deps.sdl2。
當(dāng)前在Windws平臺(tái),我們提供了以下以來(lái)包:

  • gstream 用于音頻和視頻的播放
  • glew 和/或者 angle (僅限于3.5版本) 用于OpenGL 渲染
  • sdl2 用于控制 和/或者 用于 OpenGL

您可以使用KIVY_GL_BACKEND環(huán)境變量,通過(guò)設(shè)置為gl.(默認(rèn)值)、angle或sdl2來(lái)選擇這些變量中的哪些用于OpenGL。angle 目前處于實(shí)驗(yàn)階段,只代替Python 3.5上的glw。

gstream 是一個(gè)可選的依賴(lài)。當(dāng)只有播放音頻和視頻的功能需要的時(shí)候,它才需要被安裝。當(dāng)然ffpyplayer 也是一種可選的替代方案。

命令行
熟悉你的命令行工具。執(zhí)行 pip工具或者wheel工具的時(shí)候,需要python在你的系統(tǒng)的環(huán)境變量中。在windows系統(tǒng)中,命令行工具詳細(xì)內(nèi)容可以查看這里內(nèi)容,快捷啟動(dòng)方式是鍵盤(pán)上Win+R,在彈出的窗口中輸入cmd,按下Enter,接著就會(huì)出現(xiàn)窗口。另外一個(gè)Linux風(fēng)格的命令Shell是Git for Windows。注意,如果安裝了Bash Shell ,系統(tǒng)自帶的CMD仍然可以使用的。
嘗試用這種方式吧!將Python加入系統(tǒng)路徑中,只需要打開(kāi)命令行程序,使用 cd 的命令切換到Python安裝所在文件夾(例如 C:\Python27)《另外如果你只有一個(gè)版本的Python話(huà),直接在CMD或者Bash使用這個(gè)就好了。

使用開(kāi)發(fā)版本的Kivy

警告:在開(kāi)發(fā)的過(guò)程中,使用最近的開(kāi)發(fā)版本的Kivy會(huì)有比較大的風(fēng)險(xiǎn),你可能會(huì)遇到一些錯(cuò)誤。如果你遇到BUG,請(qǐng)及時(shí)反饋。

與其使用wheels包安裝kivy,倒不如通過(guò)Git 使用kivy源代碼編譯和安裝,這樣還有其他一些步驟:

  1. Python和Python\Script目錄必須在系統(tǒng)路徑上。每次你重新編譯Kiy時(shí),才能正確工作。
  2. 確認(rèn)你有最新版本的pip工具和wheels工具:
python -m pip install --upgrade pip wheel setuptools
  1. 獲取編譯器。對(duì)于低于3.5版本的Python,我們按照如下步驟使用mingwpy:
    (a) 新建文件 python\Lib\distutils\distutils.cfg ,然后增加兩行的內(nèi)容
[build]
compiler = mingw32

(b) 安裝MinGW:

python -m pip install -i https://pypi.anaconda.org/carlkl/simple mingwpy

對(duì)于Python 3.5,我們使用MSVC編譯器。對(duì)于3.5,Visual Studio 2015是必需的,它是免費(fèi)的。只要下載并安裝它,你就可以很快熟悉了。
VisualStudio非常大,因此你也可以使用較小的VisualC構(gòu)建工具來(lái)代替。

  1. 這是環(huán)境變量。在Window平臺(tái):
set USE_SDL2=1 
set USE_GSTREAMER=1

在Bash中:

export USE_SDL2=1 export USE_GSTREAMER=1

這些變量在你每次重新編譯Kivy的時(shí)候需要重新設(shè)置。
5.安裝其他的依賴(lài)(如果不需要視頻和音頻播放,可以不用安裝gstream)

python -m pip install cython docutils pygments pypiwin32 kivy.deps.sdl2 \ kivy.deps.glew kivy.deps.gstreamer kivy.deps.glew_dev kivy.deps.sdl2_dev \ kivy.deps.gstreamer_dev
  1. 如果您下載或克隆Kivy到另一個(gè)位置,不想將它安裝到site-packages位置,請(qǐng)閱讀下一節(jié)。
  2. 最后,使用pip install 文件名 編譯和安裝kivy,其中文件名可以是url,例如用于kivy 主分支的https://github.com/kivy/kivy/archive/master.zip,或者kivy的本地副本的完整路徑。

編譯Kivy

  1. 從Github上clone克隆代碼:
python -m pip install kivy\.
  1. 如果編譯成功沒(méi)有任何錯(cuò)誤,Kivy應(yīng)該是可以使用的。你可以通過(guò)運(yùn)行一個(gè)基本的例子來(lái)測(cè)試它:
python share\kivy-examples\demo\showcase\main.py

安裝Kivy到其他位置
在開(kāi)發(fā)中,Kivy通常安裝到其他備用位置,然后安裝:

python -m pip install -e location

這允許Kivy在供python使用的同時(shí)保持其原始位置,這對(duì)于直接使用Git去跟蹤Kivy中的更改非常有用。
為了在不同的位置使用Kivy,需要額外的調(diào)整。由于這個(gè)問(wèn)題,wheels和PIP將依賴(lài)wheel安裝到 python\Lib\site-packages\kivy。所以它們需要從這個(gè)位置中移到你的Kivy安裝的位置。
在安裝Kivy依賴(lài)項(xiàng)并下載或克隆Kivy到您最喜歡的位置之后,請(qǐng)執(zhí)行以下操作:

  1. 移動(dòng)內(nèi)容 python\Lib\site-packages\kivy\deps to your-path\kivy\deps 到你的Kivy所在位置
  2. 移除文件夾 python\Lib\site-packages\kivy
  3. 從 python\Lib\site-packages 移動(dòng) kivy.deps.*.dist-info 目錄到Kivy旁邊的路徑。

現(xiàn)在您可以用以下命令中的其中一個(gè),安全地編譯Kivy在其當(dāng)前位置:

> make 
> mingw32-make 
> python -m pip install -e . 
> python setup.py build_ext --inplace

如果kivy import 失敗,可能是因?yàn)槟銢](méi)有從site-package中刪除所有的 .dist-info 文件夾 或者 kivy or kivy.deps相關(guān)信息

讓Python隨時(shí)隨地可用
在Python上啟動(dòng)Python文件有兩種方法。

雙擊的方法
如果只安裝了一個(gè)Python,那么可以將所有*.py 文件與您的python關(guān)聯(lián)(如果還沒(méi)有),然后通過(guò)雙擊運(yùn)行它。

  1. 右鍵單擊要啟動(dòng)的Python應(yīng)用程序的(.py文件擴(kuò)展名)。
  2. 從彈出的菜單中選擇,選擇打開(kāi)方式
  3. 瀏覽你的硬盤(pán),找到你想要使用的\Python.exe。選擇它
  4. 如果每次雙擊Python文件時(shí)不想重復(fù)這個(gè)過(guò)程,請(qǐng)選擇“始終打開(kāi)……”。
  5. 完成,打開(kāi)文件。

Send-To的方法
你可以執(zhí)行Python文件通過(guò)“發(fā)送到”菜單啟動(dòng)。

  1. 瀏覽到要使用的Python.exe文件。右擊它并復(fù)制。
  2. 打開(kāi)Windows資源管理器(Windows 8中的文件資源管理器),并轉(zhuǎn)到地址“shell:sendTo”。你應(yīng)該得到特殊的Windows目錄
  3. 粘貼之前復(fù)制到的python.exe到該地方
  4. 重命名python.exe為其他名字。例如:python27-x64
    你現(xiàn)在可以通過(guò)右鍵python文件發(fā)送到 “python27-x64” 去執(zhí)行python文件。
    要將新wheels安裝到以前的Kivy發(fā)行版中,除了python文件夾之外,所有文件和文件夾都應(yīng)該從發(fā)行版中刪除。然后,這個(gè)python文件夾將被視為正常安裝的系統(tǒng)python,然后可以繼續(xù)前文安裝中描述的所有步驟。

1.2.2 在Mac OS中進(jìn)行安裝

注意:本指南描述了建立KiVy的多種方法。建議使用自制Homebrew和PIP安裝。
使用homebrew和pip

  1. 使用homebrew安裝所需內(nèi)容:
$ brew install pkg-config sdl2 sdl2_image sdl2_ttf sdl2_mixer gstreamer
  1. 使用pip安裝Cython和Kivy:
$ pip install Cython==0.26.1 
$ pip install kivy

安裝開(kāi)發(fā)版本,在第2步驟使用以下指令:

$ pip install https://github.com/kivy/kivy/archive/master.zip

使用MacPorts和pip安裝

注意:如果你想在你的Kivy App中播放音頻,你就必須需要手動(dòng)安裝Gstreamer。最近的port文檔可以從以下的獲取py-gst-python port。

你可以使用以下步驟安裝Kivy:

  1. 安裝 Macports
  2. 安裝和設(shè)置Python3.4為默認(rèn)的python解釋器:
$ port install python34 $ port select --set python python34

3.安裝和設(shè)置pip為默認(rèn)的包管理器:

$ port install pip-34 
$ port select --set pip pip-34

4.使用Macports 安裝必要的內(nèi)容:

$ port install libsdl2 libsdl2_image libsdl2_ttf libsdl2_mixer

5.使用PIP安裝Cython和Kivy:

$ pip install Cython==0.26.1 
$ pip install kivy

如果安裝開(kāi)發(fā)版本,你可以在第二步驟中使用以下指令:

$ pip install https://github.com/kivy/kivy/archive/master.zip

使用Kivy App

注意:Kivy.app在下載的時(shí)候不可以使用。對(duì)于更多內(nèi)容,你可以查看這些[內(nèi)容](https://github.com/kivy/kivy/issues/5211)。

注意:目前這個(gè)方法是在OS X 1.7中測(cè)試。對(duì)于10.7或者10.7 32位的版本。你不需要自己安裝Components。我們建議使用Homebrew這個(gè)軟件。

對(duì)于OS X 10.7以及更高版本,我們提供了綁定在虛擬環(huán)境中的所有依賴(lài)項(xiàng)的包,包括用于Kivy3.app的Python 3的解釋器。這些包是用于快速原型開(kāi)發(fā)的,目前是用Buildzoer包裝KiVy應(yīng)用程序的容器。

安裝Kivy,你必須:

  1. 在這個(gè)網(wǎng)址中瀏覽最近版本的Kivy。然后下載 Kivy-osx-python.7z.
  2. 使用解壓軟件 Keka解壓它
  3. 拷貝Kivy2.app 或者 Kivy3.app 作為 Kivy.app 到/Application這個(gè)位置。然后在終端執(zhí)行以下命令行:
$ sudo mv Kivy2.app /Applications/Kivy.app
  1. 創(chuàng)建命名為kivy的鏈接,以便能夠使用kivy venv快速啟動(dòng)應(yīng)用程序:
$ ln -s /Applications/Kivy.app/Contents/Resources/script /usr/local/bin/kivy
  1. 所有的案例或者kivy的工具都已經(jīng)包含在 Kivy.app/Contents/Resources/Kivy 的目錄結(jié)構(gòu)

你現(xiàn)在有一個(gè)Kivy的腳本可以在命令行中快速啟動(dòng)你的kivy應(yīng)用程序。你只需要拖拽你的main.py到命令行即可。

安裝 模塊
OS X上的Kivy SDK使用自己的虛擬環(huán)境,當(dāng)使用Kiy命令運(yùn)行應(yīng)用程序時(shí),該虛擬環(huán)境被激活。如果你需要安裝需要你想要的模塊,你可以這樣:

$ kivy -m pip install <modulename>

到底模塊/文件到底安裝在哪個(gè)位置呢?
在應(yīng)用程序內(nèi)的便攜式虛擬環(huán)境里面:

Kivy.app/Contents/Resources/venv/

如果你安裝一個(gè)模塊(安裝二進(jìn)制文件,例如 kivy-garden)。這個(gè)二進(jìn)制文件只有在上文提到的虛擬環(huán)境中有效。就和你執(zhí)行以下命令是同樣的效果:

kivy -m pip install kivy-garden

garden庫(kù)只有當(dāng)你激活這個(gè)環(huán)境的時(shí)候,才會(huì)變得有效:

source /Applications/Kivy.app/Contents/Resources/venv/bin/activate garden install mapview deactivate

安裝二進(jìn)制文件
只需要拷貝二進(jìn)制文件到 ** /Applications/Kivy.app/Contents/Resources/venv/bin/ **位置

包含其他的框架
Kivy.app 發(fā)布的時(shí)候帶有SDL2和Gstreamer。要包含除所提供的以外的框架,請(qǐng)執(zhí)行以下操作:

git clone http://github.com/tito/osxrelocator export PYTHONPATH=~/path/to/osxrelocator cd /Applications/Kivy.app python -m osxrelocator -r . /Library/Frameworks/<Framework_name>.framework/ \ @executable_path/../Frameworks/<Framework_name>.framework/

不要忘記 替代<framework_name>的內(nèi)容。工具osxrelocator 改變了框架中庫(kù)的路徑,使它們的路徑是相對(duì)于.app文件的,使得Framework可以與app一起移植。

*啟動(dòng)任何的Kivy應(yīng)用程序
你可以通過(guò)拖拽應(yīng)用程序的main文件到Kivy.app
圖標(biāo),以運(yùn)行任何的Kivy應(yīng)用程序。你可以嘗試用這種方法去運(yùn)行Kivy的案例程序。

從命令行啟動(dòng)應(yīng)用程序
如果你想從命令行啟動(dòng)Kivy程序,在你已經(jīng)拖拽Kivy.app到應(yīng)用程序的文件夾厘米厚,雙擊 Make Symlinks 腳本。可以通過(guò)以下步驟測(cè)試是否可行:

  1. 打開(kāi)命令行,然后輸入:
$ kivy

2.然后輸入:

import kivy

如果沒(méi)有任何錯(cuò)誤,那表示執(zhí)行成功。

  1. 接著執(zhí)行Kivy程序
$ kivy yourapplication.py

1.2.3 在Linux中安裝

針對(duì)不同的Linux發(fā)行版要使用對(duì)應(yīng)的軟件包
.deb / .rpm
Ubuntu / Kubuntu / Xubuntu / Lubuntu (Saucy and above)

  1. 添加一個(gè)你想要的PPAs
    穩(wěn)定構(gòu)建
$ sudo add-apt-repository ppa:kivy-team/kivy 

每日構(gòu)建
···
$ sudo add-apt-repository ppa:kivy-team/kivy-daily
···

  1. 使用包管理器更新 包列表
 $ sudo apt-get update 

3.安裝Kivy:
Python2-python-kivy

 $ sudo apt-get install python-kivy 

Python3-python3-kivy

$ sudo apt-get install python3-kivy 

安裝案例(可選)

$ sudo apt-get install python-kivyexamples

Debian (Jessie 或者更新的版本)

  1. 在APT中手動(dòng)添加一個(gè)PPA到列表中
  1. 通過(guò)執(zhí)行將GPG密鑰添加到APT密鑰環(huán):
    如果是用戶(hù):
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A863D2D6

如果是Root:

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A863D2D6 
  1. 刷新你的包列表,然后安裝python-kivy 和/或者 python3-kivy,以及安裝kivy案例(可選)。

Linux Mint

  1. 了解Ubuntu發(fā)布的安裝是基于什么,可以使用這個(gè)概述。
  2. 取決于你的安裝基于哪個(gè)版本,繼續(xù)以上Ubuntu的安裝描述。

Bodhi Linux

  1. 確認(rèn)你現(xiàn)在運(yùn)行的是哪個(gè)版本的發(fā)行版。使用以下列表中的去找出Ubuntu LTS是基于哪一個(gè)。
  • Bodhi 1 Ubuntu 10.04 LTS aka Lucid (No packages, just manual install)
  • Bodhi 2 Ubuntu 12.04 LTS aka Precise
  • Bodhi 3 Ubuntu 14.04 LTS aka Trusty
  • Bodhi 4 Ubuntu 16.04 LTS aka Xenial
  1. 取決于你的安裝基于哪個(gè)版本,繼續(xù)以上Ubuntu的安裝描述。

OpenSuSE

  1. 網(wǎng)址安裝kivy。為openSuSe的發(fā)行版使用 "1 Click Install"安裝。你可能想通過(guò)點(diǎn)擊顯示不穩(wěn)定版本去查閱最近的Kivy的版本。我們更喜歡通過(guò) "devel:languages:python"去決定如何使用安裝包
  2. 如果想訪(fǎng)問(wèn)kivy這些示例,請(qǐng)?jiān)诩磳惭b的向?qū)е羞x擇Python Kivy示例。

Gentoo

  1. 有一個(gè)Kivy的穩(wěn)定版
    emerge Kivy
  2. 有效的USE-FLag是:
    cairo: 標(biāo)準(zhǔn)的flag, 可以讓kivy使用 cairo圖形庫(kù)
    camera: 安裝該庫(kù),可以讓kivy支持?jǐn)z像機(jī)相關(guān)內(nèi)容
    doc:標(biāo)準(zhǔn)的flag,可以讓你本地構(gòu)建文檔
    examples: 標(biāo)準(zhǔn)的flag,可以讓你獲得kivy案例
    garden:安裝garden工具,可以管理用戶(hù)維護(hù)的控件
    gstreamer:標(biāo)準(zhǔn)的flag,kivy能夠支持音頻和視頻的播放
    spell:標(biāo)準(zhǔn)的flag,可以在kivy支持拼寫(xiě)校正

其他
對(duì)于其他Linux發(fā)行版,我們建議通過(guò)PIP進(jìn)行安裝,如下所示。

1.2.4 安裝一個(gè)虛擬環(huán)境

通用的依賴(lài)
Cython
Kivy的不同版本只對(duì)某個(gè)Cython版本進(jìn)行了測(cè)試。

QQ圖片20181029095725.png

與SDL2的依賴(lài)關(guān)系
Ubuntu 案例
在下面的命令中,在Python 2中使用“Python”和“Python-dev”,或者在Python 3中使用“Python 3”和“Python 3-dev”。

# Install necessary system packages 
sudo apt-get install -y \ 
python-pip \ 
build-essential \ 
git \ 
python \ 
python-dev \ 
ffmpeg \ 
libsdl2-dev \ 
libsdl2-image-dev \ 
libsdl2-mixer-dev \ 
libsdl2-ttf-dev \ 
libportmidi-dev \ 
libswscale-dev \ 
libavformat-dev \ 
libavcodec-dev \ 
zlib1g-dev

# Install gstreamer for audio, video (optional) 
sudo apt-get install -y \ 
libgstreamer1.0 \ 
gstreamer1.0-plugins-base \ 
gstreamer1.0-plugins-good

注意:依賴(lài)于您的Linux版本,您可能會(huì)收到與“ffmpeg”包相關(guān)的錯(cuò)誤信息。在這種情況下,使用“l(fā)ibav-tools”代替“ffmpeg”,或者使用PPA(如下所示):

- sudo add-apt-repository ppa:mc3man/trusty-media 
- sudo apt-get update 
- sudo apt-get install ffmpeg

安裝

#確認(rèn)Pip, Virtualenv and Setuptools 已經(jīng)被更新了
sudo pip install --upgrade pip virtualenv setuptools

# 然后創(chuàng)建一個(gè)命名為 "kivyinstall" 的 virtualenv(虛擬環(huán)境):
# 1. 使用默認(rèn)的解釋器
virtualenv --no-site-packages kivyinstall

# 或者 2. 使用指定的解釋器
# (這樣將使用位置在/usr/bin/python2.7的python解釋器) 
virtualenv --no-site-packages -p /usr/bin/python2.7 kivyinstall

# 輸入 virtualenv
. kivyinstall/bin/activate

# 這里使用正確的Cython
pip install Cython==0.27.3

# 安裝穩(wěn)定的Kivy版本到virtualenv里面
pip install kivy 
# 對(duì)于開(kāi)發(fā)版本的Kivy, 使用以下命令替代
# pip install git+https://github.com/kivy/kivy.git@master

與傳統(tǒng)PyGame的依賴(lài)關(guān)系
Ubuntu 案例

# 安裝系統(tǒng)必要的包
sudo apt-get install -y \ 
python-pip \ 
build-essential \ 
mercurial \ 
git \ 
python \ 
python-dev \ 
ffmpeg \ 
libsdl-image1.2-dev \ 
libsdl-mixer1.2-dev \ 
libsdl-ttf2.0-dev \ 
libsmpeg-dev \ 
libsdl1.2-dev \ 
libportmidi-dev \ 
libswscale-dev \ 
libavformat-dev \ 
libavcodec-dev \ 
zlib1g-dev

Fedora

$ sudo yum install \ 
make \ 
mercurial \ 
automake \ 
gcc \ 
gcc-c++ \ 
SDL_ttf-devel \ 
SDL_mixer-devel \ 
khrplatform-devel \ 
mesa-libGLES \ 
mesa-libGLES-devel \ 
gstreamer-plugins-good \ 
gstreamer \ 
gstreamer-python \ 
mtdev-devel \ 
python-devel \ 
python-pip

Fedora

$ sudo yum install \ 
make \ 
mercurial \ 
automake \ 
gcc \ 
gcc-c++ \ 
SDL_ttf-devel \ 
SDL_mixer-devel \ 
khrplatform-devel \ 
mesa-libGLES \ 
mesa-libGLES-devel \ 
gstreamer-plugins-good \ 
gstreamer \ 
gstreamer-python \ 
mtdev-devel \ 
python-devel \ 
python-pip

OpenSuse

$ sudo zypper install \ 
python-distutils-extra \ 
python-gstreamer-0_10 \ 
python-enchant \ 
gstreamer-0_10-plugins-good \ 
python-devel \ 
Mesa-devel \ 
python-pip 
$ sudo zypper install -t pattern devel_C_C++

安裝

# 確認(rèn)Pip, Virtualenv and Setuptools 已經(jīng)更新了
sudo pip install --upgrade pip virtualenv setuptools
# 接著創(chuàng)建命名為“kivyinstall”的virtualenv:
# 1. 使用默認(rèn)的python解釋器 
virtualenv --no-site-packages kivyinstall

# 或者 2. 使用指定的解釋器# (使用 /usr/bin/python2.7) 
virtualenv --no-site-packages -p /usr/bin/python2.7 kivyinstall

# 進(jìn)入 virtualenv 
. kivyinstall/bin/activate
pip install numpy
pip install Cython==0.27.3
# 如果你想使用pygame 后端代替 sdl2
# 你可以使用命令行export USE_SDL2=0. 安裝pygame 
#  如果Kivy安裝的時(shí)候找不到sdl2 庫(kù)它就會(huì)自動(dòng)設(shè)置該值為0,然后嘗試使用pygame
pip install hg+http://bitbucket.org/pygame/pygame
#在virtualenv中安裝穩(wěn)定版本的kivy
pip install kivy
#對(duì)于開(kāi)發(fā)版本,你可以使用以下命令代替:
pip install git+https://github.com/kivy/kivy.git@master

安裝額外的Virtualenv的包

# 在 virtualenv中安裝開(kāi)發(fā)版本的buildozer
pip install git+https://github.com/kivy/buildozer.git@master
# 在 virtualenv中安裝開(kāi)發(fā)版本的plyer
pip install git+https://github.com/kivy/plyer.git@master
# 為KivyCatalog 安裝依賴(lài)
pip install -U pygments docutils

從命令行啟動(dòng)
我們準(zhǔn)備了運(yùn)行例子。然而,這些示例被封裝在包內(nèi)。這意味著您必須首先知道easy_install已經(jīng)安裝了當(dāng)前的Kivy包中,然后轉(zhuǎn)到示例目錄:

$ python -c "import pkg_resources; print(pkg_resources.resource_filename('kivy', '../share/kivy-examples'))"

你應(yīng)該有一個(gè)路徑的值:

/usr/local/lib/python2.6/dist-packages/Kivy-1.0.4_beta-py2.6-linux-x86_64.egg/share/kivy-examples/

然后你可以切換到案例文件夾中,運(yùn)行:

# 執(zhí)行 touchtracer 
$ cd <path to kivy-examples> 
$ cd demo/touchtracer 
$ python main.py
# 執(zhí)行 pictures 
$ cd <path to kivy-examples> 
$ cd demo/pictures 
$ python main.py

如果您熟悉UNIX和符號(hào)鏈接,您可以在主頁(yè)目錄中直接創(chuàng)建一個(gè)鏈接,以便于訪(fǎng)問(wèn)。例如:

  1. 從上面的命令行獲取示例路徑
  2. 粘貼到命令行
$ ln -s <path to kivy-examples> ~/
  1. 然后你在你的home文件夾目錄訪(fǎng)問(wèn)kivy的案例程序
$ cd ~/kivy-examples

如果你想通過(guò)腳本(./main.py)或者雙擊它們可以啟動(dòng)你的Kivy程序,你需要通過(guò)鏈接定義正確的python版本。例如:

$ sudo ln -s /usr/bin/python2.7 /usr/bin/kivy

或者如果你想在virtualenv中運(yùn)行Kivy程序,鏈接到Python解釋器,你可以這樣:
$ sudo ln -s /home/your_username/Envs/kivy/bin/python2.7 /usr/bin/kivy
然后每一行的python文件,輸入:

#!/usr/bin/kivy

注意: 謹(jǐn)防Python文件存儲(chǔ)的時(shí)候以windows風(fēng)格的行末(CR-LF)結(jié)束。Linux是不會(huì)忽略<CR>字符的,它會(huì)嘗試使用它作為文件名的一部分。這樣會(huì)產(chǎn)生混亂的信息。所以建議要以Unix行風(fēng)格結(jié)束文件行內(nèi)容。

設(shè)備權(quán)限
當(dāng)你的APP啟動(dòng)的時(shí)候,Kivy使用 Mtdev 掃描可用的多點(diǎn)觸控設(shè)備作為輸入。對(duì)這些設(shè)備的訪(fǎng)問(wèn)通常限于具有適當(dāng)權(quán)限的用戶(hù)或組。
如果您無(wú)法訪(fǎng)問(wèn)這些設(shè)備,KiVy將指定這些設(shè)備記錄錯(cuò)誤或警告,,通常類(lèi)似于:

Permission denied:'/dev/input/eventX'

為了使用這些設(shè)備,需要授予用戶(hù)或組權(quán)限。這可以通過(guò):

$ sudo adduser $USER input

注意,您需要退出,然后再次返回,以應(yīng)用這些權(quán)限。

1.2.5 在安卓中安裝

Kivy是一個(gè)Python框架,它安裝在Android設(shè)備上,就像在桌面桌面機(jī)器上一樣簡(jiǎn)單。然而,你可以編譯Kivy應(yīng)用為標(biāo)準(zhǔn)的安卓APK應(yīng)用程序,運(yùn)行起來(lái)和正常的Java 應(yīng)用程序差不多。
我們提供了多種不同的工具幫助你在安卓的設(shè)備中運(yùn)行,具體內(nèi)容在安卓打包的章節(jié)中。這些包含了創(chuàng)建一個(gè)發(fā)布在安卓市場(chǎng)上的完整標(biāo)準(zhǔn)APK程序。也包含了不需要經(jīng)過(guò)編譯步驟,直接使用預(yù)先準(zhǔn)備好的Kivy執(zhí)行器執(zhí)行Kivy apps。

1.2.6 在樹(shù)莓派中安裝

你可以手動(dòng)安裝Kivy?;蛘吣憧梢韵螺d和啟動(dòng)KivyPie在樹(shù)莓派系統(tǒng)中。這些都在以下的內(nèi)容中說(shuō)明:

  1. 手動(dòng)安裝(在 Raspbian Jessie/Stretch)
sudo apt-get update 
sudo apt-get install libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev \ 
pkg-config libgl1-mesa-dev libgles2-mesa-dev \ 
python-setuptools libgstreamer1.0-dev git-core \ 
gstreamer1.0-plugins-{bad,base,good,ugly} \ 
gstreamer1.0-{omx,alsa} python-dev libmtdev-dev \ 
xclip xsel
  1. 安裝足夠新版本的Cython
sudo pip install -U Cython==0.27.3 
  1. 在你的系統(tǒng)中進(jìn)行全局安裝。
sudo pip install git+https://github.com/kivy/kivy.git@master
  1. 或者自己構(gòu)建kivy(最好用于開(kāi)發(fā)):
git clone https://github.com/kivy/kivy 
cd kivy
make echo "export PYTHONPATH=$(pwd):\$PYTHONPATH" >> ~/.profile 
source ~/.profile

注意:在1.10.1之前的kivy版本中,Mesa庫(kù)命名更改可能導(dǎo)致“Unable to ?nd any valuable Window provider”錯(cuò)誤。如果你遇到此問(wèn)題,請(qǐng)升級(jí)或查詢(xún)問(wèn)題5360

手動(dòng)安裝(在Raspbian Wheezy)

  1. 為GStreamer增加APT源:
deb http://vontaene.de/raspbian-updates/ . main
  1. 為vontaene.de 增加APT key
gpg --recv-keys 0C667A3E 
gpg -a --export 0C667A3E | sudo apt-key add 
  1. 安裝依賴(lài):
sudo apt-get update 
sudo apt-get install libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev \ 
pkg-config libgl1-mesa-dev libgles2-mesa-dev \ 
python-setuptools libgstreamer1.0-dev git-core \ 
gstreamer1.0-plugins-{bad,base,good,ugly} \ 
gstreamer1.0-{omx,alsa} python-dev

  1. 從源代碼中安裝pip
wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py 
sudo python get-pip.py
  1. 從源代碼中安裝Cython
sudo pip install Cython==0.26.1
  1. 在你的系統(tǒng)中全局安裝Kivy:
sudo pip install git+https://github.com/kivy/kivy.git@master
  1. 或者自己構(gòu)建Kivy(最好用于開(kāi)發(fā)):
git clone https://github.com/kivy/kivy 
cd kivy
make echo "export PYTHONPATH=$(pwd):\$PYTHONPATH" >> ~/.profile 
source ~/.profile

KivyPie 發(fā)行版
KiVyPie是一種緊湊且輕量級(jí)的基于Raspbian的發(fā)行版,它配備了Kivy并準(zhǔn)備運(yùn)行。這是應(yīng)用上面描述的手動(dòng)安裝步驟的結(jié)果,還有一些額外的工具。你可以從http://kivypie.mitako.eu/kivy-download.html下載圖像并在樹(shù)莓派上引導(dǎo)它。

運(yùn)行案例
切換到你的 kivy/examples文件夾,你可以有大量的案例進(jìn)行測(cè)試:
你可以開(kāi)始展示:

cd kivy/examples/demo/showcase 
python main.py

3d 猴子演示也是挺有趣的:

cd kivy/examples/3Drendering 
python main.p

更改默認(rèn)屏幕以使用
運(yùn)行Kivy的時(shí)候 ,你可以設(shè)置環(huán)境變量 KIVY_BCM_DISPMANX_ID 修改顯示。例如,強(qiáng)制顯示HDMI的時(shí)候,可以這樣:

KIVY_BCM_DISPMANX_ID=2 python main.py

使用官方的樹(shù)莓派觸摸顯示
如果你正在使用官方的樹(shù)莓派觸摸顯示,你需要配置Kivy以它作為輸入源??梢跃庉嬑募?~/.kivy/config.ini中的[input]字段。增加:

mouse = mouse 
mtdev_%(name)s = probesysfs,provider=mtdev 
hid_%(name)s = probesysfs,provider=hidinput

對(duì)于更多配置Kivy的內(nèi)容,可以參考配置Kivy的章節(jié)。
我們使用GPIO/物理輸入在PyCON2013期間制作了些游戲:一個(gè)按鈕和一個(gè)斜坡。從HTTPS://GITHUBCOM/KIVY/PIKI獲取。你將需要在代碼中修改GPIO引腳。還可以通過(guò)視頻,看看我們正在做什么:http://www.youtube.com/watch?v=NVM09gaX6pQ

1.3 開(kāi)發(fā)版本

開(kāi)發(fā)版本是用于開(kāi)發(fā)者和測(cè)試者的。注意,運(yùn)行開(kāi)發(fā)版本的Kivy,你可能冒著一定的風(fēng)險(xiǎn)運(yùn)行著潛在錯(cuò)誤的代碼。要使用開(kāi)發(fā)版本,你首先需要安裝依賴(lài)。此后,您需要以方便開(kāi)發(fā)的方式在計(jì)算機(jī)上設(shè)置Kivy。更多內(nèi)容,可以查看*貢獻(xiàn)章節(jié)

1.3.1 安裝依賴(lài)

要安裝Kivy的依賴(lài)項(xiàng),請(qǐng)為你的平臺(tái)按照下面的指南。你可能還需要RST和lexing組件的這些包:

$ sudo pip install pygments docutils

Ubuntu
對(duì)于Ubuntu 12.04或者以上的版本,只需要輸入以下的指令就可以安裝所有需要的包:

$ sudo apt-get install python-setuptools python-pygame python-opengl \ 
python-gst0.10 python-enchant gstreamer0.10-plugins-good python-dev \ 
build-essential libgl1-mesa-dev-lts-quantal libgles2-mesa-dev-lts-quantal\ 
python-pip

對(duì)于Ubuntu 15.04或者比12.04更老的版本,以下可能可以工作:

$ sudo apt-get install python-setuptools python-pygame python-opengl \ 
python-gst0.10 python-enchant gstreamer0.10-plugins-good python-dev \ 
build-essential libgl1-mesa-dev libgles2-mesa-dev zlib1g-dev python-pip

對(duì)于Ubutn16.04
···
$ sudo apt-get install python-setuptools python-pygame python-opengl \
python-gst0.10 python-enchant gstreamer0.10-plugins-good python-dev \
build-essential python-pip libgl1-mesa-dev libgles2-mesa-dev zlib1g-dev
···
對(duì)于Ubuntu 17.10

$ sudo apt-get install python-setuptools python-pygame python-opengl \ 
python-enchant python-dev build-essential python-pip libgl1-mesa-dev \ 
libgles2-mesa-dev zlib1g-dev

Kivy要求最新版本的Cython,最好使用最新支持的pypi

$ sudo pip install --upgrade Cython==0.27.3

OS X
在不使用brew的情況下,可以通過(guò)在終端中手動(dòng)粘貼以下命令來(lái)安裝KiVy的依賴(lài)項(xiàng):

curl -O -L https://www.libsdl.org/release/SDL2-2.0.4.dmg 
curl -O -L https://www.libsdl.org/projects/SDL_image/release/SDL2_image-2.0.1.dmg 
curl -O -L https://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-2.0.1.dmg 
curl -O -L https://www.libsdl.org/projects/SDL_ttf/release/SDL2_ttf-2.0.13.dmg 
curl -O -L http://gstreamer.freedesktop.org/data/pkg/osx/1.7.1/gstreamer-1.0-1.7.1-x86_64.pkg 
curl -O -L http://gstreamer.freedesktop.org/data/pkg/osx/1.7.1/gstreamer-1.0-devel-1.7.1-x86_64.pkg 
hdiutil attach SDL2-2.0.4.dmg sudo cp -a /Volumes/SDL2/SDL2.framework /Library/Frameworks/

這應(yīng)該詢(xún)問(wèn)你的根密碼,提供它,然后在你的終端粘貼下面的行:

hdiutil attach SDL2_image-2.0.1.dmg sudo cp -a /Volumes/SDL2_image/SDL2_image.framework /Library/Frameworks/ hdiutil attach SDL2_ttf-2.0.13.dmg 
sudo cp -a /Volumes/SDL2_ttf/SDL2_ttf.framework /Library/Frameworks/ hdiutil attach SDL2_mixer-2.0.1.dmg 
sudo cp -a /Volumes/SDL2_mixer/SDL2_mixer.framework /Library/Frameworks/ 
sudo installer -package gstreamer-1.0-1.7.1-x86_64.pkg -target / 
sudo installer -package gstreamer-1.0-devel-1.7.1-x86_64.pkg -target / 
pip install --upgrade --user cython pillow

現(xiàn)在你已經(jīng)有了kivy的依賴(lài),你需要確認(rèn)已經(jīng)安裝了命令行工具:

xcode-select --install

切換到正確的文件夾,例如:

mkdir ~/code 
cd ~/code

你現(xiàn)在可以安裝Kivy:

git clone http://github.com/kivy/kivy 
cd kivy 
make

這樣會(huì)編譯kivy,為了在你的Python環(huán)境中能夠訪(fǎng)問(wèn),需要把變量PYTHONPATH指向到以下文件夾:

export PYTHONPATH=~/code/kivy:$PYTHONPATH

檢查Kivy是否安裝成功,可以在命令行下面輸入以下內(nèi)容:

python -c "import kivy"

,然后你會(huì)得到類(lèi)似以下的信息:

$ python -c "import kivy" 
[INFO ] [Logger ] Record log in /Users/quanon/.kivy/logs/kivy_15-12-31_21.txt 
[INFO ] [Screen ] Apply screen settings for Motorola Droid 2 
[INFO ] [Screen ] size=480x854 dpi=240 density=1.5 orientation=portrait 
[INFO ] [Kivy ] v1.9.1-stable 
[INFO ] [Python ] v2.7.10 (default, Oct 23 2015, 18:05:06) 
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)]

OSX HomeBrew
如果你更喜歡使用homebrew,可以這樣安裝依賴(lài):

$ brew install sdl2 sdl2_image sdl2_ttf sdl2_mixer gstreamer

1.3.2 安裝Kivy以便開(kāi)發(fā)

現(xiàn)在你已經(jīng)所有需要的依賴(lài),是應(yīng)該下載和編譯開(kāi)發(fā)版本的Kivy了:
···
git clone git://github.com/kivy/kivy.git cd kivy
···
編譯:

$ python setup.py build_ext --inplace -f

如果你有make工具,你也可以這樣,作用和上文提到的一樣:

make

警告:默認(rèn)情況下,Python 2.7到2.7.2版本使用的是GCC編譯器,它是和更早XCode一起發(fā)布的。到了4.2版本XCode,XCode默認(rèn)情況下只有CLang編譯器。這樣意味著,使用XCode4.2版本或者以上的版本的,你需要確認(rèn)至少安裝了Python2.7.3版本,更好的是使用最新版本(截止撰稿的的時(shí)候,最新版本是2.7.5)。

如果你想修改Kivy 代碼本身,建立 PYTHONPATH 環(huán)境變量 去指向你的克隆代碼。這樣的話(huà),你就不用在每次很小的修改都要使用setup.py install進(jìn)行安裝。Python將會(huì)自動(dòng)將你克隆的代碼Import kivy。

或者,如果您不想對(duì)Kivy本身做任何更改,你也可以運(yùn)行(如Admin,例如SUDO):
···
$ python setup.py install
···
如果你想為Kivy的代碼做一份貢獻(xiàn)的話(huà),可以參考貢獻(xiàn)章節(jié)。

1.3.3 運(yùn)行測(cè)試套件

為了幫助檢測(cè)Kivy中的問(wèn)題和行為變化,提供了一組unittests。一個(gè)好的做法是在你的Kyvy安裝之后和每次你想修改kivy的時(shí)候運(yùn)行它們。如果你認(rèn)為在Kivy遇到了一些問(wèn)題,也許測(cè)試會(huì)顯示相關(guān)的內(nèi)容。(如果不是,那也許是好的開(kāi)始。)

Kivy測(cè)試是基于nosetest的。你可以從你的包管理器中安裝它

$ pip install nose

運(yùn)行測(cè)試套件:

$ make test

1.3.4 卸載Kivy

如果你正在混合多個(gè)Kivy版本,你可能會(huì)對(duì)每個(gè)Kivy版本所在的位置感到困惑。你可能需要在Python庫(kù)路徑中多次跟蹤安裝多個(gè)Kivy版本。為了找出當(dāng)前安裝的版本,可以使用命令行:

$ python -c 'import kivy; print(kivy.__path__)'

然后遞歸刪除該目錄。

如果在Linux上安裝了帶有easy_install安裝的Kivy,目錄可能包含一個(gè)“egg”目錄。也刪除它:

$ python -c 'import kivy; print(kivy.__path__)' 
['/usr/local/lib/python2.7/dist-packages/Kivy-1.0.7-py2.7-linux-x86_64.egg/kivy'] 
$ sudo rm -rf /usr/local/lib/python2.7/dist-packages/Kivy-1.0.7-py2.7-linux-x86_64.egg

如果你使用apt-get安裝的,使用以下方法:

$ sudo apt-get remove --purge python-kivy
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容