Dropbox如何在Windows和OS X上使用Python?

40 投票
6 回答
18377 浏览
提问于 2025-04-15 21:50

在Windows系统上,Dropbox客户端使用的是python25.dll和一些微软的C运行库(比如msvcp71.dll等)。而在OS X系统上,Python代码则是编译成字节码(pyc)。

我猜他们可能写了一个通用的库,然后只需要为不同的平台使用不同的接口。

这种开发方法是什么呢?显然不是IronPython或者PyObjC。我觉得这种方式很吸引人,但我的计算机知识和搜索能力都不太够用了。

6 个回答

18

对于WINDOWS系统,Dropbox使用了一种类似于py2exe的工具,把他们的所有.py脚本、需要的库、资源等等打包成你上面提到的那些文件(.exelibrary.zipMS C runtime librarypython25.dll),这样就可以在不需要安装Python的情况下运行。下面是一个使用py2exe实现这个功能的示例代码。

from distutils.core import setup
import py2exe


options = {'py2exe': {
           'compressed':1,  
           'bundle_files': 2,
           'dll_excludes': ['w9xpopen.exe']
           }}
setup(console=['myapp.py'],options=options)

想了解更多,可以查看这个教程 这里

另外,分发包中的文件数量可以通过上面示例中的选项参数来控制。

36

Dropbox在Mac上使用了wxPython和PyObjC这两种工具(在0.8版本中,wxPython用得较少)。看起来他们建立了一个用户界面抽象层,但并没有特别复杂的东西,也就是说,他们在做跨平台应用时走的是正确的路线。

他们自己包含了一个Python版本,主要是因为Mac上不同的操作系统版本自带的Python版本不一样(而Dropbox支持的版本可以追溯到10.4,如果我没记错的话);此外,他们还对Python解释器做了一些定制,以改善多线程和输入输出的表现。

(我并不是Dropbox的员工,也没有任何内部消息;我只是阅读了他们的论坛,并查看了Dropbox应用包中的site-packages.zip里的文件名。)

撰写回答