Как Dropbox использует Python в Windows и OS X?

В Windows клиент Dropbox использует python25.dll и MS C библиотеки времени выполнения (msvcp71.dll, и т.д.). На OS X код Python является скомпилированным байт-кодом (pyc).

Мое предположение, они пользуются общей библиотекой, которую они записали, затем просто должны использовать различные рычаги для различных платформ.

Какой метод разработки - это? Это ясно не IronPython или PyObjC. Эта парадигма так обращается ко мне, но мое нечто CS и нечто Google приводят меня к сбою.

39
задан robotshapes 20 April 2010 в 19:53
поделиться

3 ответа

Dropbox использует комбинацию wxPython и PyObjC на Mac (меньше wxPython в серии 0.8). Похоже, они создали немного уровня абстракции пользовательского интерфейса, но ничего ошеломляющего, то есть они правильно делают свое кроссплатформенное приложение.

Они включают собственный Python в основном потому, что версии Python, включенные в Mac, различаются в зависимости от версии ОС (а Dropbox поддерживает до 10.4 IIRC); Кроме того, они немного настроили интерпретатор Python для улучшения работы с потоками и ввода-вывода.

(Я не работаю в Dropbox и не обладаю какими-либо внутренними знаниями; все, что я сделал, это прочитал их форумы и изучил имена файлов в site-packages.zip в пакете приложений Dropbox.)

{ {1}}
35
ответ дан 27 November 2019 в 02:37
поделиться

Python25.dll, вероятно, не является кодом их приложения, это dll, содержащая копию интерпретатора Python, которую можно вызвать из приложения Windows. Эти файлы pyc, вероятно, в какой-то форме находятся в Windows, но они могут быть в архиве или запутаны.

Python включен в OS / X, поэтому они могли бы выполнить этот файл pyc без доставки python, но не удивимся, если у них будет собственная версия python, скрытая в пакете приложений.

Я не знаю, как Dropbox собирает эти дистрибутивы, но есть несколько инструментов для объединения приложений Python в исполняемые пакеты. Взгляните на py2exe, py2app или cx_freeze.

4
ответ дан 27 November 2019 в 02:37
поделиться

Действительно, они объединяют свой собственный интерпретатор Python 2.5.4, который можно найти по адресу /Applications/Dropbox.app/Contents/MacOS/python . Пробираясь в /Applications/Dropbox.app/Contents/Resources/lib/python2.5/lib-dynload , похоже, что это связано с PyObjC.

Я не являюсь авторитетом в этом вопросе, но похоже, что это именно то, что вы предлагаете в OP:

Я предполагаю, что они используют общую библиотеку, которую они написали тогда просто {{1} } приходится использовать разные ловушки для разных платформ

5
ответ дан 27 November 2019 в 02:37
поделиться