首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将脚本导入到IBM WATSON STUDIO中的笔记本中

将脚本导入到IBM WATSON STUDIO中的笔记本中
EN

Stack Overflow用户
提问于 2019-08-23 15:55:19
回答 2查看 980关注 0票数 0

我在image免费版的CIFAR 10图像上做PCA,所以我上传了python文件,以便在工作室下载CIFAR10

图如下。

但是,当我试图导入cache时,会显示以下错误。图如下-

在谷歌上呆了一段时间后,我找到了一个解决方案,但我无法理解。链接https://dataplatform.cloud.ibm.com/docs/content/wsj/analyze-data/add-script-to-notebook.html

代码语言:javascript
复制
the solution is as follows:- 
Click the Add Data icon (Shows the Add Data icon), and then browse the script file or drag it into your notebook sidebar.

Click in an empty code cell in your notebook and then click the Insert to code link below the file. Take the returned string, and write to a file in the file system that comes with the runtime session.

To import the classes to access the methods in a script in your notebook, use the following command:

For Python:

from <python file name> import <class name>

我听不懂这句话

‘并写入运行时会话附带的文件系统中的文件.

在哪里可以找到运行时会话附带的文件?文件系统在哪里?

有谁能帮我查到那个文件的详细信息吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-26 12:01:16

您有导入错误,因为您试图导入的脚本在Python运行时的本地文件系统中不可用。文件(cache.pycifar10.py等)上传到与Watson Studio项目关联的对象存储桶中。要使用这些文件,需要将它们提供给Python运行时,例如将脚本下载到运行时本地文件系统。

UPDATE:同时,有一个选项可以直接插入StreamingBody对象。这还将包括所有所需的凭据。如果您使用的是writing it to a file in the local runtime filesystem选项,则可以跳过此答案的insert StreamingBody object部分。

或,

您可以使用下面的代码片段读取StreamingBody对象中的脚本:

代码语言:javascript
复制
import types
import pandas as pd
from botocore.client import Config
import ibm_boto3

def __iter__(self): return 0
os_client= ibm_boto3.client(service_name='s3',
ibm_api_key_id='<IBM_API_KEY_ID>',
ibm_auth_endpoint="<IBM_AUTH_ENDPOINT>",
config=Config(signature_version='oauth'),
endpoint_url='<ENDPOINT>')

# Your data file was loaded into a botocore.response.StreamingBody object.
# Please read the documentation of ibm_boto3 and pandas to learn more about the possibilities to load the data.
# ibm_boto3 documentation: https://ibm.github.io/ibm-cos-sdk-python/
# pandas documentation: http://pandas.pydata.org/
streaming_body_1 = os_client.get_object(Bucket='<BUCKET>', Key='cifar.py')['Body']
# add missing __iter__ method, so pandas accepts body as file-like object
if not hasattr(streaming_body_1, "__iter__"): streaming_body_1.__iter__ = types.MethodType( __iter__, streaming_body_1 ) 

然后将其写入本地运行时文件系统中的文件。

代码语言:javascript
复制
f = open('cifar.py', 'wb')
f.write(streaming_body_1.read())

这将打开一个具有写访问权限的文件,并调用write方法对该文件进行写入。然后,您应该能够简单地导入脚本。

代码语言:javascript
复制
import cifar

注意:您可以通过单击文件下拉菜单上的IBM_API_KEY_ID选项来获取文件的凭据,如Insert credentials

票数 2
EN

Stack Overflow用户

发布于 2021-11-09 06:16:43

op发现的指令遗漏了一行关键代码。我跟踪它们,并能够导入模块,但无法在这些模块中使用任何函数或类。这是通过在写完后关闭文件来修正的。指示中的这一部分:

代码语言:javascript
复制
f = open('<myScript>.py', 'wb')
f.write(streaming_body_1.read())

应该改为(至少在我的例子中是这样的):

代码语言:javascript
复制
f = open('<myScript>.py', 'wb')
f.write(streaming_body_1.read())
f.close()

希望这能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57629588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档