Nic*_*ley 35
Dropbox在Mac上使用了wxPython和PyObjC的组合(0.8系列中的wxPython较少).看起来他们已经构建了一些UI抽象层,但没有什么是压倒性的 - 也就是说,他们正在以正确的方式做他们的跨平台应用程序.
它们包括自己的Python主要是因为Mac上包含的Python版本因操作系统版本而异(而Dropbox支持回到10.4 IIRC); 此外,他们还对Python解释器进行了一些定制,以改善线程和I/O行为.
(我不为Dropbox工作或有任何内部知识;我所做的只是阅读他们的论坛并检查site-packages.zip
Dropbox应用程序包中的文件名.)
Phi*_*lar 18
对于WINDOWS,Dropbox的已采用类似模块py2exe他们所有的.py脚本,需要的库,资源等打包成你所提到的分布(.exe
,library.zip
,MS C runtime library
和python25.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参数控制分发中的文件数,如上例所示.
实际上,他们捆绑了自己的Python 2.5.4解释器/Applications/Dropbox.app/Contents/MacOS/python
.在/Applications/Dropbox.app/Contents/Resources/lib/python2.5/lib-dynload
它看来它看起来被PyObjC捆绑在一起.
我对此没有权威,但它似乎与你在OP中的建议完全一样:
我猜他们正在使用他们编写的公共库,然后只需要为不同的平台使用不同的钩子
归档时间: |
|
查看次数: |
16984 次 |
最近记录: |