# Python 2&3解釋器
原文鏈接 : [http://zeppelin.apache.org/docs/0.7.2/interpreter/python.html](http://zeppelin.apache.org/docs/0.7.2/interpreter/python.html)
譯文鏈接 : [http://www.apache.wiki/pages/viewpage.action?pageId=10030879](http://www.apache.wiki/pages/viewpage.action?pageId=10030879)
貢獻者 : [片刻](/display/~jiangzhonglian) [ApacheCN](/display/~apachecn) [Apache中文網](/display/~apachechina)
## 配置
| 屬性 | 默認 | 描述 |
| --- | --- | --- |
| zeppelin.python | python | 已經安裝的Python二進制文件的路徑(可以是python2或python3)。如果python不在您的$ PATH中,您可以設置絕對目錄(例如:/usr/bin/python) |
| zeppelin.python.maxResult | 1000 | 要顯示的最大數據幀數。 |
## 啟用Python解釋器
在筆記本中,要啟用**Python解釋**器,請單擊“?**齒輪”**圖標,然后選擇“?**Python”**
## 使用Python解釋器
在段落中,使用**_%python_**選擇**Python解釋**器,然后輸入所有命令。
解釋器只有在已經安裝了python的情況下才可以工作(解釋器不帶自己的python二進制文件)。
要訪問幫助,請鍵入**help()**
## Python環境
### 默認
默認情況下,PythonInterpreter將使用在`zeppelin.python`屬性中定義的python命令來運行python進程。解釋器可以使用已經安裝的所有模塊(帶pip,easy_install ...)
### Conda
[Conda](http://conda.pydata.org/)是一個用于python的軟件包管理系統和環境管理系統。?`%python.conda`解釋器可讓您在環境之間切換。
#### 用法
列出你的環境
```
%python.conda?
```
激活環境
```
%python.conda activate [ENVIRONMENT_NAME]?
```
停用
```
%python.conda deactivate?
```
### Docker
`%python.docker`?解釋器允許PythonInterpreter在指定的docker容器中創建python進程。
#### 用法
激活環境
```
%python.docker activate [Repository]
%python.docker activate [Repository:Tag]
%python.docker activate [Image Id] ?
```
停用
```
%python.docker deactivate?
```
案例
```
# activate latest tensorflow image as a python environment
%python.docker activate gcr.io/tensorflow/tensorflow:latest?
```
## 使用Zeppelin動態表單?
您可以在Python代碼中使用[Zeppelin 動態表單](http://www.apache.wiki/pages/viewpage.action?pageId=10030585)。
**Zeppelin動態表單只能在系統中安裝py4j Python庫時使用。如果沒有,可以安裝它`pip install py4j`。**
示例:
```
%python
### Input form
print (z.input("f1","defaultValue"))
### Select form
print (z.select("f1",[("o1","1"),("o2","2")],"2"))
### Checkbox form
print("".join(z.checkbox("f3", [("o1","1"), ("o2","2")],["1"])))?
```
## Matplotlib集成
python解釋器可以使用`pyplot`模塊自動顯示matplotlib數字:
```
%python
import matplotlib.pyplot as plt
plt.plot([1, 2, 3])?
```
這是在Zeppelin筆記本中使用matplotlib的推薦方法。默認情況下,此命令的輸出將通過隱式使用`%html`魔術將其轉換為HTML?。使用內置`z.configure_mpl()`方法可以實現其他配置。例如,
```
z.configure_mpl(width=400, height=300, fmt='svg')
plt.plot([1, 2, 3])?
```
將產生一個SVG格式的400x300圖像,默認情況下通常為600x400和PNG。在將來,`angular`可以使用另一個可選的選項來使從一個段落直接從另一段生成的圖形更新(輸出將`%angular`代替`%html`)。但是,該功能在解釋器中已經`pyspark`可用。更多細節可以在包含的“Zeppelin Tutorial:Python - matplotlib basic”教程筆記本中找到。
如果Zeppelin找不到matplotlib后端文件(通常應該在其中找到`$ZEPPELIN_HOME/interpreter/lib/python`)`PYTHONPATH`,則后端將自動設置為agg,并且(否則不推薦使用)的說明可用于更有限的內聯繪圖。
如果無法加載內聯后端,請使用`z.show(plt)`:`python %python import matplotlib.pyplot as plt plt.figure() (.. ..) z.show(plt) plt.close()?`該`z.show()`功能可以使用可選參數來調整圖形尺寸(寬度和高度)以及輸出格式(png或可選的svg)。
```
%python
z.show(plt, width='50px')
z.show(plt, height='150px', fmt='svg')?
```

## Pandas整合
Apache Zeppelin?[桌面顯示系統](http://zeppelin.apache.org/docs/0.7.1/displaysystem/basicdisplaysystem.html#table)?提供內置的數據可視化功能。Python解釋器利用它可視化Pandas DataFrames,雖然類似的`z.show()`API,與[Matplotlib集成一樣](http://zeppelin.apache.org/docs/0.7.1/interpreter/python.html#matplotlib-integration)。
例:
```
import pandas as pd
rates = pd.read_csv("bank.csv", sep=";")
z.show(rates)?
```
## 在Pandas DataFrames上的SQL
有一個方便的`%python.sql`解釋器,與Zeppelin中的Apache Spark體驗相匹配,可以使用SQL語言來查詢[Pandas DataFrames](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.html),并通過內置[表格顯示系統](http://zeppelin.apache.org/docs/0.7.1/displaysystem/basicdisplaysystem.html#table)可視化結果。
**預申請**
* Pandas:?`pip install pandas`
* PandaSQL:?`pip install -U pandasql`
如果默認綁定解釋器是Python(首先在解釋器列表中,在_齒輪圖標下_),您可以將其用作`%sql`ie
* 第一段
```
import pandas as pd
rates = pd.read_csv("bank.csv", sep=";")?
```
* 下一段
```
%sql
SELECT * FROM rates WHERE age < 40?
```
否則可以稱為?`%python.sql`
## 技術說明
有關當前實現的深入技術細節請參考[python / README.md](https://github.com/apache/zeppelin/blob/master/python/README.md)。
### Python解釋器中尚未實現某些功能
* 中斷段落執行(`cancel()`方法)目前僅在Linux和MacOs中受支持。如果解釋器在另一個操作系統(例如MS Windows)中運行,則中斷一個段落將關閉整個解釋器。打開JIRA票([ZEPPELIN-893](https://issues.apache.org/jira/browse/ZEPPELIN-893)),在下一個版本的解釋器中實現此功能。
* webUI(`getProgress()`方法)中的進度條目前尚未實現。
* 代碼完成目前尚未實施。
- 快速入門
- 什么是Apache Zeppelin?
- 安裝
- 配置
- 探索Apache Zeppelin UI
- 教程
- 動態表單
- 發表你的段落
- 自定義Zeppelin主頁
- 升級Zeppelin版本
- 從源碼編譯
- 使用Flink和Spark Clusters安裝Zeppelin教程
- 解釋器
- 概述
- 解釋器安裝
- 解釋器依賴管理
- 解釋器的模擬用戶
- 解釋員執行Hook(實驗)
- Alluxio 解釋器
- Beam 解釋器
- BigQuery 解釋器
- Cassandra CQL 解釋器
- Elasticsearch 解釋器
- Flink 解釋器
- Geode/Gemfire OQL 解釋器
- HBase Shell 解釋器
- HDFS文件系統 解釋器
- Hive 解釋器
- Ignite 解釋器
- JDBC通用 解釋器
- Kylin 解釋器
- Lens 解釋器
- Livy 解釋器
- Markdown 解釋器
- Pig 解釋器
- PostgreSQL, HAWQ 解釋器
- Python 2&3解釋器
- R 解釋器
- Scalding 解釋器
- Scio 解釋器
- Shell 解釋器
- Spark 解釋器
- 系統顯示
- 系統基本顯示
- 后端Angular API
- 前端Angular API
- 更多
- 筆記本存儲
- REST API
- 解釋器 API
- 筆記本 API
- 筆記本資源 API
- 配置 API
- 憑據 API
- Helium API
- Security ( 安全 )
- Shiro 授權
- 筆記本 授權
- 數據源 授權
- Helium 授權
- Advanced ( 高級 )
- Zeppelin on Vagrant VM ( Zeppelin 在 Vagrant 虛擬機上 )
- Zeppelin on Spark Cluster Mode( Spark 集群模式下的 Zeppelin )
- Zeppelin on CDH ( Zeppelin 在 CDH 上 )
- Contibute ( 貢獻 )
- Writing a New Interpreter ( 寫一個新的解釋器 )
- Writing a new Visualization (Experimental) ( 編寫新的可視化(實驗) )
- Writing a new Application (Experimental) ( 寫一個新的應用程序( 實驗 ) )
- Contributing to Apache Zeppelin ( Code ) ( 向 Apache Zeppelin 貢獻( 代碼 ) )
- Contributing to Apache Zeppelin ( Website ) ( 向 Apache Zeppelin 貢獻(website) )