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

rob*_*pes 39 python windows macos dropbox

在Windows中,Dropbox客户端使用python25.dll和MS C运行时库(msvcp71.dll等).在OS X上,Python代码是编译的字节码(pyc).

我猜他们正在使用他们编写的公共库,然后只需要为不同的平台使用不同的钩子.

这有什么发展方法?它显然不是IronPython或PyObjC.这种模式对我很有吸引力,但我的CS foo和Google foo让我失望.

Nic*_*ley 35

Dropbox在Mac上使用了wxPython和PyObjC的组合(0.8系列中的wxPython较少).看起来他们已经构建了一些UI抽象层,但没有什么是压倒性的 - 也就是说,他们正在以正确的方式做他们的跨平台应用程序.

它们包括自己的Python主要是因为Mac上包含的Python版本因操作系统版本而异(而Dropbox支持回到10.4 IIRC); 此外,他们还对Python解释器进行了一些定制,以改善线程和I/O行为.

(我不为Dropbox工作或有任何内部知识;我所做的只是阅读他们的论坛并检查site-packages.zipDropbox应用程序包中的文件名.)


Phi*_*lar 18

对于WINDOWS,Dropbox的已采用类似模块py2exe他们所有的.py脚本,需要的库,资源等打包成你所提到的分布(.exe,library.zip,MS 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)
Run Code Online (Sandbox Code Playgroud)

有关更多说明,请参阅此处的教程.

PS:可以使用options参数控制分发中的文件数,如上例所示.


jat*_*ism 5

实际上,他们捆绑了自己的Python 2.5.4解释器/Applications/Dropbox.app/Contents/MacOS/python.在/Applications/Dropbox.app/Contents/Resources/lib/python2.5/lib-dynload它看来它看起来被PyObjC捆绑在一起.

我对此没有权威,但它似乎与你在OP中的建议完全一样:

我猜他们正在使用他们编写的公共库,然后只需要为不同的平台使用不同的钩子