google-cloud-storage - Dataproc 导入存储在谷歌云存储 (gcs) 存储桶中的 python 模块

标签 google-cloud-storage python-import google-cloud-dataproc

我在 GCS 存储桶上有以下结构:

  1. my_bucket/notebooks/jupyter/
    • 模块
      • 我的模块.py
      • 初始化.py
    • notebook_1.ipynb

如何在 notebook_1.ipynb 中导入 mymodule? (notebook_1.ipynb 是一个 python 笔记本,不是 spark 笔记本)

最佳答案

恐怕这是不可能的,因为您需要将该模块放在您运行脚本的目录或您的 sys.path 中。 .


作为一个选项,您可以实现一个函数,从您的云存储下载模块,使用它的功能,然后将其删除。

这是我为测试目的编写的一个简单的示例:

greetings.py(我存储在存储桶中的文件):

def say_hello(name):
    return "Hello {}!".format(name)


def say_hi(name):
    return "Hi {}!".format(name)

main.py:

from google.cloud import storage
import os


def get_module():
    """
    Instantiate Storage Client and return the blob located in the bucket.
    """
    client = storage.Client()
    bucket = client.get_bucket('<my-bucket-name>')
    return bucket.blob('greetings.py')


def use_my_module(my_method, val):
    """
    Download the module, use it and then remove.    
    """
    blob = get_module()
    blob.download_to_filename('my_module.py')
    import my_module

    result = getattr(my_module, my_method)(val)
    os.remove('my_module.py')
    return result


print(use_my_module('say_hello', 'User 1'))
print(use_my_module('say_hi', 'User 2'))

输出:

Hello User 1!
Hi User 2!

我不能说上面的例子对你的场景是否有效,但我希望它能给你一些想法。


编辑:

关于您的模块位于脚本 (notebook_1.ipynb) 目录的子目录 中的情况 - 您可以像这样导入模块:

import modules.mymodule

然后你可以用下面的结构来使用它:

modules.mymodule.<your-method>

关于google-cloud-storage - Dataproc 导入存储在谷歌云存储 (gcs) 存储桶中的 python 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58832044/

相关文章:

python - 当 __init__.py 破坏 pyinstaller 时如何正确导入文件

python - ImportError:没有名为 numpy 的模块 - 使用 Jupyter Notebook 时的 Google Cloud Dataproc

apache-spark - Dataproc 上的 Apache Hudi

google-cloud-platform - GCP Dataproc 并行步骤执行

java - 从 Google Storage 下载数据时出现 SocketTimeoutException

ios - 将音频文件从 Google Cloud Storage 流式传输到 iOS Firebase 客户端应用

google-cloud-storage - 我可以在控制台中递归搜索谷歌云存储桶吗?

python - 如何在不导入的情况下检查 Python 模块是否存在

google-cloud-platform - 如何安排从 BigQuery 表到 Cloud Storage 的导出?

Python Snakefood 模块导入普遍失败