Бэкэнд Pydrive не работает с дублированием - python

Я пытаюсь использовать дублирование / дублирование с PyDrive. Тем не менее, я получаю очень загадочное сообщение об ошибке, в котором говорится, что я обращаюсь к странице установки PyDrive. Который не предлагает решения.

Вот вывод команды duply, которую я выполняю, включая ошибку.

$ duply mac-mini.gdrive status
Start duply v1.11.1, time is 2016-02-20 19:28:59.
Using profile '/etc/duply/mac-mini.gdrive'.
Using installed duplicity version 0.7.06, python 2.7.10, gpg 1.4.19 (Home: ~/.gnupg), awk 'awk version 20070501', grep 'grep (BSD grep) 2.5.1-FreeBSD', bash '4.3.42(1)-release (x86_64-apple-darwin14.5.0)'.
Checking TEMP_DIR '/tmp' is a folder and writable (OK)
Test - En/Decryption skipped. (GPG disabled)

--- Start running command STATUS at 19:29:00.000 ---
BackendException: PyDrive backend requires PyDrive installationPlease read the manpage to fix.
19:29:00.000 Task 'STATUS' failed with exit code '23'.
--- Finished state FAILED 'code 23' at 19:29:00.000 - Runtime 00:00:00.000 ---

Я использую OS X 10.11.3, у меня установлены brew и pip. Я использовал pip для установки pydrive.

$ pip install pyDrive
Requirement already satisfied (use --upgrade to upgrade): pyDrive in /Library/Python/2.7/site-packages
Requirement already satisfied (use --upgrade to upgrade): google-api-python-client>=1.2 in /Library/Python/2.7/site-packages (from pyDrive)
Requirement already satisfied (use --upgrade to upgrade): PyYAML>=3.0 in /Library/Python/2.7/site-packages (from pyDrive)
Requirement already satisfied (use --upgrade to upgrade): six<2,>=1.6.1 in /Library/Python/2.7/site-packages (from google-api-python-client>=1.2->pyDrive)
Requirement already satisfied (use --upgrade to upgrade): oauth2client<3,>=2.0.0 in /Library/Python/2.7/site-packages (from google-api-python-client>=1.2->pyDrive)
Requirement already satisfied (use --upgrade to upgrade): httplib2<1,>=0.8 in /Library/Python/2.7/site-packages (from google-api-python-client>=1.2->pyDrive)
Requirement already satisfied (use --upgrade to upgrade): uritemplate<1,>=0.6 in /Library/Python/2.7/site-packages (from google-api-python-client>=1.2->pyDrive)
Requirement already satisfied (use --upgrade to upgrade): pyasn1>=0.1.7 in /Library/Python/2.7/site-packages (from oauth2client<3,>=2.0.0->google-api-python-client>=1.2->pyDrive)
Requirement already satisfied (use --upgrade to upgrade): pyasn1-modules>=0.0.5 in /Library/Python/2.7/site-packages (from oauth2client<3,>=2.0.0->google-api-python-client>=1.2->pyDrive)
Requirement already satisfied (use --upgrade to upgrade): rsa>=3.1.4 in /Library/Python/2.7/site-packages (from oauth2client<3,>=2.0.0->google-api-python-client>=1.2->pyDrive)
Requirement already satisfied (use --upgrade to upgrade): simplejson>=2.5.0 in /Library/Python/2.7/site-packages (from uritemplate<1,>=0.6->google-api-python-client>=1.2->pyDrive)

И для референсе я бегу текущие версии как двуличности, так и дублирования.

$ duply -V
  duply version 1.11.1
  (http://duply.net)

  Using installed duplicity version 0.7.06, python 2.7.10, gpg 1.4.19 (Home: ~/.gnupg), awk 'awk version 20070501', grep 'grep (BSD grep) 2.5.1-FreeBSD', bash '4.3.42(1)-release (x86_64-apple-darwin14.5.0)'.

2 ответа

Решение

Обновление 2016/04/25:

Несовместимость с python2-oauth2client 2.00 была исправлена ​​на двойственность 0.7.07.1 (см. Журнал изменений). Я только что проверил его на Linux-коробке, и он отлично работает.

Оригинальный пост следует:

Прежде всего, проверьте свою версию python2-oauth2client. На момент написания этой версии 2.00, похоже, еще не работал с двуличностью. Мне пришлось вернуться к версии 1.5.2, чтобы она снова заработала.

Во-вторых, убедитесь, что нет конфликта, вызванного различными версиями Python (встроенные OSX или пакеты homebrew, установленные вручную, pip и т. Д.). Это может быть хорошая идея использовать исключительно домашнее пиво.

В-третьих, убедитесь, что ваша конфигурация pydrive завершена. Вот краткое изложение того, как сделать это с "нормальной" учетной записью пользователя Google:

Шаг 1: Создайте файл конфигурации pydrive backend

Создайте файл конфигурации pydrive где-нибудь (например. /etc/duply/pydrive.conf или же ~/etc/pydrive.conf) со следующим содержанием:

client_config_backend: settings
client_config:
    client_id: <client-id-string>.apps.googleusercontent.com
    client_secret: <client-secret-string>
save_credentials: True
save_credentials_backend: file
save_credentials_file: </path/to/save/authdata.json>
get_refresh_token: True
  • client_id и client_secret могут быть получены из API-менеджера консоли разработчиков Google после того, как Google Drive API был включен.

  • Задайте для save_credentials_file произвольное расположение, где pydrive может кэшировать данные аутентификации после успешного подключения (например, /etc/duply/pydrive.json или же ~/etc/pydrive.json).

Шаг 2: Скажите двуличность, где его найти

Это делается путем установки переменной оболочки GOOGLE_DRIVE_SETTINGS:

$ export GOOGLE_DRIVE_SETTINGS=/etc/duply/pydrive.conf

Вы можете добавить это к вашему ~/.bashrc так что во всех сеансах оболочки он устанавливается автоматически.

Шаг 3: Аутентификация в первый раз

Как процитировано из справочника duplicity:

Во время первого запуска вам будет предложено перейти по URL в вашем браузере, чтобы предоставить доступ к вашему диску. После получения вы получите проверочный код для вставки обратно в Duplicity. Затем учетные данные кэшируются в ссылках на файлы выше для дальнейшего использования.

... и вы сделали.

Поиск проблемы

Если это по-прежнему не работает, проверьте права доступа к файлам. Достаточно ли у пользователя, работающего с двойственностью, разрешения для файлов конфигурации, указанных выше?

Та же проблема для меня с python2-oauth2client версии 2.00. Решено путем понижения до python2-oauth2client 1.5.2. Прекрасно работает с инструкциями Кристиана Мунда.

Duplicity 0.7.10 - это скрипт Python 2. Как вы видете:

➜  ~ head $(which duplicity)                                                                                                                                                                                       
#!/usr/bin/env python2                                                                                                                                                                                             
# -*- Mode:Python; indent-tabs-mode:nil; tab-width:4 -*-
#
# duplicity -- Encrypted bandwidth efficient backup
# Version 0.7.10 released August 20, 2016
#
# Copyright 2002 Ben Escoto <ben@emerose.org>
# Copyright 2007 Kenneth Loafman <kenneth@loafman.com>
#
# This file is part of duplicity.

Поэтому убедитесь, что вы запускаете Python 2, а не Python 3.

Другие вопросы по тегам