首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从另一个python脚本导入类。

从另一个python脚本导入类。
EN

Stack Overflow用户
提问于 2021-08-26 14:32:47
回答 1查看 70关注 0票数 0

这是带有类algorithmia_utils.pyAlgorithmiaUtils文件

代码语言:javascript
复制
class AlgorithmiaUtils:

def __init__(self, api_key, username, algo_name, local_dir):
    self.api_key = api_key
    self.username = username
    self.algo_name = algo_name
    self.local_dir = local_dir

    self.algo_namespace = f"{self.username}/{self.algo_name}"
    self.algo_script_path = "{}/{}/src/{}.py".format(
        self.local_dir, algo_name, algo_name
    )
    self.dependency_file_path = "{}/{}/{}".format(
        self.local_dir, algo_name, "requirements.txt"
    )

    self.algo_client = Algorithmia.client(self.api_key)

def upload_model_to_algorithmia(
    self, local_path, algorithmia_data_path, model_name
):
    if not self.algo_client.dir(algorithmia_data_path).exists():
        self.algo_client.dir(algorithmia_data_path).create()
    algorithmia_path = "{}/{}".format(algorithmia_data_path, model_name)
    result = self.algo_client.file(algorithmia_path).putFile(local_path)

我想使用来自另一个脚本的函数upload_model_to_algorithmia

因此,我试图:

代码语言:javascript
复制
import Algorithmia
import algorithmia_utils as algo_utility

并调用该函数:

代码语言:javascript
复制
algo_utility.AlgorithmiaUtils.upload_model_to_algorithmia(
    local_path = local_path, 
    algorithmia_data_path = algorithmia_data_path, 
    model_name = model_name)

返回错误:

代码语言:javascript
复制
TypeError: upload_model_to_algorithmia() missing 1 required positional argument: 'self'

我应该添加一个额外的参数,还是没有正确导入文件,以及如何解决这个问题?

谢谢!

编辑:

这看起来很容易,但到目前为止还没有解决办法。

代码语言:javascript
复制
import Algorithmia
import algorithmia_utils as algo_utility
from algorithmia_utils import AlgorithmiaUtils as xpto

和:

代码语言:javascript
复制
xpto.upload_model_to_algorithmia(
    local_path = local_path, 
    algorithmia_data_path = algorithmia_data_path, 
    model_name = model_name)

返回错误:

代码语言:javascript
复制
TypeError: upload_model_to_algorithmia() missing 1 required positional argument: 'self'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-26 14:34:42

做这个,

代码语言:javascript
复制
from algorithmia_utils import AlgorithmiaUtils

首先创建类对象,

代码语言:javascript
复制
algoutil = AlgorithmiaUtils(api_key = api_key, 
    username = username, 
    algo_name = algo_name,
    local_dir = local_dir,)

现在您已经创建了一个名为algoutil的对象,它属于AlgorithmiaUtils类,它拥有该类可用的所有方法。

然后你这样做来运行你的函数,

代码语言:javascript
复制
algoutil.upload_model_to_algorithmia(local_path = local_path, 
    algorithmia_data_path = algorithmia_data_path, 
    model_name = model_name
)

您需要用所需的信息替换引号后面的参数。

我认为您已经从https://github.com/algorithmiaio/model-deployment/blob/master/xgboost_notebook_to_algorithmia/algorithmia_utils.py获得了代码,但是主要服务是由算法托管的,如果我没有错,您需要在那里创建一个帐户并获取一个api密钥并将其插入到代码中。例如,它看起来像这样,

代码语言:javascript
复制
from algorithmia_utils import AlgorithmiaUtils

algoutil = AlgorithmiaUtils(api_key = '8hf81qhg3t8h12f', 
    username = 'unstuck', 
    algo_name = 'algo1',
    local_dir = '/home/docs/whatever',)

algoutil.upload_model_to_algorithmia(local_path = '/home/docs/whatever/algo.csv', 
    algorithmia_data_path = '/path/to/file', 
    model_name = 'model1'
)

我已经回答了您关于如何创建对象并使用它的问题,但是您需要通过阅读文档来输入关于如何使它工作的正确的参数,这是一个完全不同的问题。

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

https://stackoverflow.com/questions/68940504

复制
相关文章

相似问题

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