#python
Вопрос:
Это algorithmia_utils.py
файл с классом AlgorithmiaUtils
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
из другого сценария.
Таким образом, я пытаюсь:
import Algorithmia
import algorithmia_utils as algo_utility
И чтобы вызвать функцию:
algo_utility.AlgorithmiaUtils.upload_model_to_algorithmia(
local_path = local_path,
algorithmia_data_path = algorithmia_data_path,
model_name = model_name)
Что возвращает ошибку:
TypeError: upload_model_to_algorithmia() missing 1 required positional argument: 'self'
Должен ли я добавить дополнительный аргумент или я неправильно импортировал файл, и как это исправить?
Спасибо!
Редактировать:
Это выглядит очень просто, но до сих пор нет решения.
import Algorithmia
import algorithmia_utils as algo_utility
from algorithmia_utils import AlgorithmiaUtils as xpto
И:
xpto.upload_model_to_algorithmia(
local_path = local_path,
algorithmia_data_path = algorithmia_data_path,
model_name = model_name)
Верните ошибку:
TypeError: upload_model_to_algorithmia() missing 1 required positional argument: 'self'
Комментарии:
1. Это метод экземпляра, а не функция. Вам нужен экземпляр
AlgorithmiaUtils
, чтобы вызвать его.2. Хорошо @chepner, но не могли бы вы уточнить? Я пытаюсь это понять
3. Я отсылаю вас к учебнику по Python, особенно к этому разделу о классах .
Ответ №1:
сделай это,
from algorithmia_utils import AlgorithmiaUtils
Сначала создайте объект класса,
algoutil = AlgorithmiaUtils(api_key = api_key,
username = username,
algo_name = algo_name,
local_dir = local_dir,)
Теперь вы создали объект с именем algoutil
, который относится к классу AlgorithmiaUtils, у него есть все методы, доступные этому классу.
Затем вы делаете это, чтобы запустить свою функцию,
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 но основной сервис размещен здесь, в algorithmia, https://algorithmia.com/developers/clients/python если я не ошибаюсь, вам нужно пойти туда, создать учетную запись, получить ключ api и вставить его в код. Например, это выглядело бы примерно так,
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. Спасибо за помощь, но я получаю ту же ошибку
2. в нем говорится (upload_model_to_algorithmia() отсутствует 1 необходимый позиционный аргумент: ‘self, означает, что вы не создали его должным образом
3. Я получаю ошибку: ошибка типа: __init__() отсутствуют 4 обязательных позиционных аргумента: ‘api_key’, ‘имя пользователя’, ‘algo_name’ и ‘local_dir’ в строке algoutil = AlgorithmiaUtils()
4. я не могу видеть ваш код… вам необходимо включить 4 аргумента: «api_key», «имя пользователя», «имя пользователя» и «local_dir», которые вы указали, local_path = local_path, algorithmia_data_path = algorithmia_data_path, имя_модели = имя_модели
5. Я просто пытаюсь следовать учебнику, который полон таких утечек, как эта, и пытаюсь найти какой-то смысл, спасибо за вашу помощь!