我可以告诉 Zeppelin 使用我的 Python 环境吗? (pyenv/venv)

Posted

技术标签:

【中文标题】我可以告诉 Zeppelin 使用我的 Python 环境吗? (pyenv/venv)【英文标题】:Can I tell Zeppelin to use my Python env? (pyenv/venv) 【发布时间】:2019-11-29 06:50:06 【问题描述】:

我希望从 JupyterLab 切换到 Apache Zeppelin。我喜欢 JupyterLab 的一件事是我可以 pipenv install jupyter,然后我在 notebook 中的 Python 代码本机使用我的应用程序的 Python 环境。这使我能够运行一个可以直接与我的应用程序的模型和视图对话的 shell。

但是,与 Jupyter 生态系统的 ipython 小部件/ nbextensions 相比,我更喜欢 Zeppelin 的 Helium 包 (Spark/Beam/Neo4j/Bash) 和 Dynamic Forms。

我如何告诉 Zeppelin 在运行 %python 单元时使用我的 pyenv/venv?


关于我的 python venv 的信息

$ pyenv activate MY_APP

$ which python
/Users/ME/.pyenv/shims/python

$ python
>>> import os
>>> os.environ['VIRTUAL_ENV']
'/Users/ME/.pyenv/versions/3.7.3/envs/MY_APP'

在 docker image apache/zeppelin:0.8.1 的 /zeppelin/conf/interpreter.json 中发现了这一点,但在映射桌面卷时比平时更加​​困难。

"python": 
      "id": "python",
      "name": "python",
      "group": "python",
      "properties": 
        "zeppelin.python": 
          "name": "zeppelin.python",
          "value": "python",
          "type": "string"
        ,

zeppelin 笔记本内部

import os
os.environ['PYTHONPATH']

[1] '/zeppelin/interpreter/python/py4j-0.9.2/src'

我确信我可以在实时笔记本中使用 %sh bash 命令完成此操作,但有没有办法可以在 zeppelin 配置中设置 python 环境强>?

【问题讨论】:

已解决 = 在 localhost:8080/#/interpreters 页面的 python 部分将 zeppelin.python 设置为 sys.executable 的输出 我邀请您在 2 天内发布答案并标记为正确,而不是发表一条评论。 @eyllanesc 忘记了您可以立即提供自己的答案......只是不接受它 您只能在发布问题2天后接受您自己的答案,因此您无法接受,您只需要等待。 【参考方案1】:

找出你的 Python 可执行文件

$ pyenv activate my_env
(my_env) $ python
>>> import sys
>>> sys.executable

/Users/me/.pyenv/versions/my_env/bin/python 

然后将浏览器导航到localhost:8080/#/interpreters 并搜索python。

zeppelin.python更改为sys.executable的输出

保存+重启zeppelin

您还需要将 zeppelin.pyspark.python 更改为相同的路径,因为 spark 的 pyspark 解释器不会推断您的常规 python 解释器的路径。

【讨论】:

【参考方案2】:

根据 Zeppelin 开发人员的说法,您还可以将其设置为内联在笔记本单元格中。

%python.conf

zeppelin.python <your_python_env_path>

【讨论】:

以上是关于我可以告诉 Zeppelin 使用我的 Python 环境吗? (pyenv/venv)的主要内容,如果未能解决你的问题,请参考以下文章

如何让独立服务 Zeppelin 看到 Hive?

Zeppelin, Livy, 我可以得到 proxyUser

在 Zeppelin 中禁用目录列表

在 zeppelin 中将 pandas 数据帧转换为 spark 数据帧

在 Zeppelin 中保存 AWS Athena 查询的结果

无法访问 Zeppelin 中的解释器设置