python - cx_freeze 一个包含 dropbox 的 python 脚本

标签 python python-2.7 dropbox cx-freeze

我想卡住一个使用 dropbox 上传文件的 python 脚本。我使用的是 python 2.7 和 windows 7。如果我尝试这个示例代码:

import dropbox
client = dropbox.client.DropboxClient(<authtoken>)
client.put_file('FileName',"", overwrite=True)

我使用 Dropbox 创建了一个应用程序,并生成了一个 token ,该 token 在 Dropbox 主页上进行了解释。如果我只使用 python 脚本,该示例就可以工作。对于 future 的应用程序,我想卡住脚本以在没有 python 的计算机上使用它。 如果我执行 .exe 文件,我会收到以下错误消息,我将 python 脚本命名为 dropbox.py:

Traceback (most recent call last):
File "C:\Python27\lib\site-packages\cx_Freeze\initscripts\Console.py", line 27, in <module>
exec(code, m.__dict__)
File "dropbox.py", line 2, in <module>
File "H:\dropbox.py", line 3, in <module>
client = dropbox.client.DropboxClient("authToken")
AttributeError: 'module' object has no attribute 'client'

已解决:不要将 dropbox.py 用于示例脚本 该错误表明找不到客户端模块,但如何修复此错误? 我的 setup.py 文件是:

import cx_Freeze
import sys
base = None

executables = [
    cx_Freeze.Executable("dropbox.py", base = base),
    ]

build_exe_options = {"includes":[],
                     "include_files":[],
                     "excludes":[],
                     "packages":[]
                     }
cx_Freeze.setup(
    name = "script",
    options = {"build_exe": build_exe_options},
    version = "0.0",
    description = "A basic example",
    executables = executables)

我还尝试添加包“dropbox”,但它不起作用。

我希望有人能帮助我。也许还有另一种方法可以将文件上传到 Dropbox?

干杯最大

编辑1: 事实上,这是我的示例脚本名称的问题。虽然还是不行。新的错误是:

Traceback (most recent call last):
  File "C:\Python27\lib\site-packages\cx_Freeze\initscripts\Console.py", line 27, in <module>
    exec(code, m.__dict__)
  File "mydropbox.py", line 2, in <module>
  File "C:\Python27\lib\site-packages\dropbox\__init__.py", line 3, in <module>
    from . import client, rest, session
  File "C:\Python27\lib\site-packages\dropbox\client.py", line 22, in <module>
    from .rest import ErrorResponse, RESTClient, params_to_urlencoded
  File "C:\Python27\lib\site-packages\dropbox\rest.py", line 26, in <module>
    TRUSTED_CERT_FILE = pkg_resources.resource_filename(__name__, 'trusted-certs.crt')
  File "build\bdist.win32\egg\pkg_resources.py", line 950, in resource_filename
  File "build\bdist.win32\egg\pkg_resources.py", line 1638, in get_resource_filename
NotImplementedError: resource_filename() only supported for .egg, not .zip

我尝试解决此网站的错误:

enter link description here

但不起作用。有人对我的新错误有解决方案吗?

最佳答案

我是这样解决问题的:

1) 在您的 dropbox 模块位置中找到文件“rest.py”(C:\Python27\Lib\site-packages\dropbox-2.2.0-py2.7.egg\dropbox - 在我的例子中)

2) 注释字符串 TRUSTED_CERT_FILE = pkg_resources.resource_filename(__name__, 'trusted-certs.crt')

3)您可以写

TRUSTED_CERT_FILE = 'trusted-certs.crt' (我用过这种方式)或

if hasattr(sys, '卡住'):

TRUSTED_CERT_FILE = 'trusted-certs.crt'

其他:

TRUSTED_CERT_FILE = pkg_resources.resource_filename(__name__, 'trusted-certs.crt')

4) 从 dropbox 目录中删除所有 pyc 文件并使用您的程序运行 py 文件

5) 使用 cx_freeze 重建可执行文件

6) 将trusted-certs.crt 文件从dropbox 目录复制到library.zip/dropbox

7)享受吧!

关于python - cx_freeze 一个包含 dropbox 的 python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27349462/

相关文章:

如果字符串以 "ly"结尾,则将 "ing"添加到字符串结尾的 Pythonic 方法?

python - 如何将函数应用于列表的元素?

javascript - 无法将照片或图像链接到 CodePen

ios - Dropbox 错误 - 'uploadData:mode:autorename:clientModified:mute:propertyGroups:inputData:'

python - 如果字典的键位于卡住集中,则检索值

python - 使用 python requests-HTML 获取标签的父元素

python - Django MySQL数据库设计

python - 从 Pandas 数据框创建对称矩阵

python-2.7 - 在 VS 2013 中调试 Python Azure 辅助角色

java - 如何删除 Dropbox 文件?