本文首發於just4funhtml
這裏將討論的嵌入式Python環境並非硬件嵌入式開發
的那個嵌入式,若是對Python和硬件感興趣,推薦micropython.python
一直想要一個嵌入式的python環境,最好對環境作的修改(諸如添加第三方包)能夠二次分發給用戶。git
在許多支持自定義功能的軟件中,咱們常常能夠看到嵌入式Python解釋器的身影,如GIMP、Blender中、Sublime Text、Thonny...github
我對這些項目一直饒有興致,卻一直沒弄懂它們是怎麼作的。覺得用了什麼高深莫測的打包技術。bootstrap
昨天,@比老師提交了一個codelab-adapter jupyter插件, 這個插件容許使用codelab-adapter GUI啓停jupyter,而jupyter便安裝在一個嵌入式Python環境中(其實是一個ZIP包)。ide
比老師徹底實現了咱們以前的目標,我興奮不已,有了這個工做,codelab-adapter面前無疑打開了一扇嶄新的大門。咱們以後能夠作的東西,一會兒變得無限寬廣。若是咱們能更好地控制環境,入門用戶就能少受些苦。@比老師提到構建易用的環境,引用Alan Kay的一句話我很是喜歡:ui
codelab-adapter一直想要一個靈活可控的Python環境,最好支持用戶安裝第三方庫。因爲咱們使用Pyinstaller進行跨平臺打包(凍結了整個項目),因此打包後的環境沒法作到對pip的支持。spa
目前關於引入第三方Python庫的策略,咱們傾向使用ZeroMQ來橋接到系統環境。插件
儘管Thonny展現了很強大的打包技巧,但它幾乎是手動來作,咱們又不大樂意。3d
@比老師的工做讓咱們看到直接使用嵌入式Python環境要輕鬆不少。
Python官方社區提供了可用的嵌入式Python環境,此前我一直不曾留意。
目前只提供了Windows系統下的Python環境。(Mac和Linux自帶Python!)
Python官方社區提供的天然是CPython的環境,據我所知有些項目在使用PyPy提供的嵌入式環境.
記錄下個人一些使用筆記。
我下載了最新的3.7.3版本: python-3.7.3-embed-win32.zip,md5爲70df01e7b0c1b7042aabb5a3c1e2fbd5
我選擇了32位系統的環境,推薦你們也使用32位的版本,32位的版本能夠在64位系統上運行,反之則不行。
下載get-pip.py到解壓後的目錄中:
以後運行:.\python get-pip.py
修改python37._pth
:
python37.zip
.
# Uncomment to run site.main() automatically
import site
複製代碼
接下來即可以使用pip安裝第三方庫了,咱們來試試安裝jupyterlab:.\python -m pip install jupyterlab -i https://mirrors.aliyun.com/pypi/simple
中途出現一個錯誤:pyrsistent安裝出錯. 手動安裝pyrsistent: www.lfd.uci.edu/~gohlke/pyt…
.\python -m pip install pyrsistent‑0.15.1‑cp37‑cp37m‑win32.whl
啓用jupyterlab:.\python -m jupyterlab
以後分發整個目錄便可!
直接把ZIP包交給用戶看起來彷佛不是很專業,可使用pynsist將其打包爲可安裝文件。