Python - 导入客户端模块

时间:2013-05-19 15:55:27

标签: python dropbox raspberry-pi

我是python的新手。今天我想把我的覆盆子pi连接到Dropbox。 我按照本教程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

我做错了什么?

3 个答案:

答案 0 :(得分:1)

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

您确定要下载Dropbox模块并进行安装吗?教程中有一个拼写错误,你应该运行:

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

下载Dropbox文件并创建模块。

更简单的方法是使用easy_installpip *安装Dropbox模块。请尝试以下方法:

sudo pip install dropbox

对于超高级用法,请了解virtualenv和virtualenv-wrapper,这样就不会在整个地方安装数百个模块......但是现在这个问题有点超出了这个问题的范围; - )

答案 1 :(得分:1)

您应首先正确安装Dropbox包。

结帐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运行上述代码不应返回上述错误。

答案 2 :(得分:0)

如果仔细查看错误,可以看到名为&#34; dropbox.py&#34;的文件中有一个dropbox import语句。这会导致命名空间冲突。

  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时,我被这个问题所困扰,并将我的代码放入&#34; dropbox.py&#34;文件。 ;)