0

我是 python 新手。今天我正在尝试将我的树莓派连接到保管箱。我按照本教程http://cttoronto.com/03/16/2013/raspberry-pi-dropbox-sync/进行操作。我cli_client.py以示例为例并插入了我的应用程序 ID 等。

import cmd
import locale
import os
import pprint
import shlex

from dropbox import client, rest, session


APP_KEY = "XXX"
APP_SECRET = "XXX"

ACCESS_TYPE = "Full Dropbox"

sess = session.DropboxSession(APP_KEY,APP_SECRET,ACCESS_TYPE)

request_token = sess.obtain_request_token()

url = sess.build_authorize_url(request_token)

然后我尝试执行脚本但收到以下错误(sudo python cli_client.py):

Traceback (most recent call last):
  File "cli_client.py", line 7, in <module>
    from dropbox import client, rest, session
  File "/var/tmp/setuptools/dropbox-python-sdk-1.5.1/example/dropbox.py", line 7, in <module>
    from dropbox import client, rest, session
ImportError: cannot import name client

我究竟做错了什么 ?

4

3 回答 3

1

该脚本正在“客户端”的“保管箱”模块中查找 - 正如您从错误中看到的那样。要么您没有正确安装它,要么教程错误(是的,见下文)。

您是否确保下载 Dropbox 模块并安装它。本教程中有一个错字,您应该运行:

wget https://www.dropbox.com/static/developers/dropbox-python-sdk-1.5.1.zip

下载保管箱文件并创建模块。

更简单的方法是使用easy_installor 或pip* 安装 Dropbox 模块。尝试以下操作:

sudo pip install dropbox

对于更高级的用法,请了解 virtualenv 和 virtualenv-wrapper,这样您就不会到处安装数百个模块......但这暂时超出了这个问题的范围;-)

于 2013-05-19T16:15:49.243 回答
1

您应该首先正确安装保管箱包。

结帐pipeasyinstall

使用安装 Dropbox 包后

sudo easy_install dropbox

或者

sudo pip install dropbox

包应该很可能驻留在/usr/local/lib/python2.7/dist-packages/dropbox/

然后从外部运行上述代码/var/tmp/setuptools/dropbox-python-sdk-1.5.1/example不应返回上述错误。

于 2013-05-19T16:16:10.620 回答
0

如果您仔细查看该错误,您会发现名为“dropbox.py”的文件中有一个 dropbox 导入语句,这会导致命名空间冲突。

  File "cli_client.py", line 7, in <module>
    from dropbox import client, rest, session
  File "/var/tmp/setuptools/dropbox-python-sdk-1.5.1/example/dropbox.py", line 7, in <module>
    from dropbox import client, rest, session
ImportError: cannot import name client

只需将 .py 文件重命名为 foo.py 之类的名称,就可以继续导入了。但看起来这个问题在 API 的后续版本中得到了修复。

当我第一次开始使用 dropbox api 并将我的代码放入“dropbox.py”文件时,我被这个问题所困扰。;)

于 2014-04-29T15:47:40.170 回答