【问题标题】:How to supply user functions/modules in DSX如何在 DSX 中提供用户功能/模块
【发布时间】:2017-06-12 02:30:39
【问题描述】:

我在单独的 python 脚本中定义了一些辅助实用程序。我想让 DSX 笔记本可以使用脚本,这样我就可以在单元格中调用它们,但我不想直接将脚本放入单元格中。

有哪些方法可以实现这一目标?

【问题讨论】:

    标签: python-2.7 python-3.x ibm-cloud dsx data-science-experience


    【解决方案1】:

    如果您可以在公共 git 存储库上公开您的代码,您可以将您的代码转换为 python 包并将其保存在 github 中。有关示例包,请参见此处:A simple Hello World setuptools package and installing it with pip

    您可以使用以下命令直接从 github 安装它:

    !pip install --user git+https://github.com/public_account/public_repo
    

    私有 github 存储库

    也应该可以在私有 github 存储库中使用与上述类似的方法,但需要一些额外的设置步骤和不同的 pip url 格式。例如

    在 dsx 上生成 ssh 密钥

    ! ssh-keygen -b 2048 -t rsa -f ~/.ssh/id_rsa -q -N ""
    

    将以下命令的输出添加到您的 github 帐户设置 :: SSH 和 GPG 密钥

    ! cat ~/.ssh/id_rsa.pub
    

    接下来将 github ssh 密钥添加到 dsx:

    ! ssh-keyscan github.com >> ~/.ssh/known_hosts
    

    重要提示:您应该手动验证导入的 github hosts 密钥是否真实。您可以通过以下方式查看导入的密钥:

    ! cat ~/.ssh/known_hosts
    

    您现在可以使用 pip 安装:

    ! pip install --user git+ssh://git@github.com/private_account/private_repo
    

    注意!上述方法存在一些安全注意事项。 IE。任何有权访问您执行上述命令的 spark 服务的人都可以访问 git 私有存储库。


    注意:

    理想情况下,我希望在未来看到 dsx 支持编辑项目中的所有文件并将所有项目文件提交到 github,例如

    【讨论】:

    【解决方案2】:

    一种选择是使用以下 API 调用将您的包从客户端计算机上传到您的 spark 帐户:

    curl \
       -X PUT \
       -k \
       -u ${tenant_id}:${tenant_secret} \
       -H "X-Spark-service-instance-id: ${instance_id}" \
       --data-binary "@path_to_local_file" \
       ${cluster_master_url}/tenant/data/destination_file_name
    

    可以通过登录到 Bluemix 控制台并导航到 Service Credentials 来获取上述变量。或者,您可以使用命令行cf 工具来检索此信息。此Q/A 提供了有关cf 命令行方法的更多信息。

    将你的包上传到spark服务后,你可以使用:

    ! pip install --user ${HOME}/data/destination_file_name
    

    感谢Roland Weber 这个答案。

    【讨论】:

      猜你喜欢
      • 2017-02-11
      • 1970-01-01
      • 2019-07-03
      • 1970-01-01
      • 1970-01-01
      • 2012-05-27
      • 1970-01-01
      • 1970-01-01
      • 2019-02-15
      相关资源
      最近更新 更多