首页 > 解决方案 > 在运行时更改 PYTHONUSERBASE 以从另一个用户特定位置导入模块(覆盖基本模块)

问题描述

我正在运行 Zeppelin 笔记本,但我无权更改任何配置文件。在这个笔记本中,我使用 livy.pyspark 来运行一个 pyspark 应用程序。

我也无权在主要 python 路径上使用 pip install 等。但是,我确实有一个包含我的用户库 python 包的文件夹。用户库包不在标准的 ~/.local 目录中。

通常,我使用环境变量 PYTHONUSERBASE 设置它,以确保 python 知道在哪里可以找到它并在必要时覆盖我的 anaconda 包。例如旧版本的熊猫。

我尝试了以下方法来覆盖 pythonuserbase 文件夹并重新加载它,以便它在我的基本模块之前找到我的用户库模块。但是,到目前为止,没有任何效果。

import sys
import os
import site

my_local_path = 'my/local/path'
sys.exec_prefix = my_local_path

os.environ['PYTHONUSERBASE'] = my_local_path

site.USER_BASE = None
site.USER_SITE = None

site.main()
site.USER_SITE # point to correct place but still not importing pandas correctly

标签: pythonlinuxruntimeapache-zeppelinbase

解决方案


推荐阅读