Вот как я это делаю:
- проект
- .Python
- bin
- lib
- python2.5
- site-packages
- <пакеты для установки pip здесь>
- include
- src
- app.yaml
- index.yaml
- main.yaml
- <символьная ссылка на пакеты, установленные в pip в ../lib/python2.5 / site-packages </li>
Каталог project
- это каталог верхнего уровня, в котором находится virtualenv.Я получаю virtualenv с помощью следующих команд:
cd project
virtualenv -p /usr/bin/python2.5 --no-site-packages --distribute .
В каталоге src
находится весь ваш код.Когда вы развертываете свой код в GAE, * only * развертывает те, что находятся в каталоге src, и ничего больше.appcfg.py
разрешит символические ссылки и скопирует для вас файлы библиотек в GAE.
Я не устанавливаю свои библиотеки в виде zip-файлов, в основном для удобства на случай, если мне нужно прочитать исходный код, что происходитсделать много просто из любопытства.Однако, если вы действительно хотите заархивировать библиотеки, поместите следующий фрагмент кода в ваш main.py
import sys
for p in ['librarie.zip', 'package.egg'...]:
sys.path.insert(0, p)
После этого вы можете импортировать ваши сжатые пакеты как обычно.
Одна вещьследить за это setuptools 'pkg_resources.py
.Я скопировал это прямо в мой каталог src
, чтобы другие пакеты с символическими ссылками могли использовать его.Остерегайтесь всего, что использует entry_point
с.В моем случае я использую Toscawidgets2, и мне пришлось копаться в исходном коде, чтобы вручную соединить кусочки.Это может раздражать, если у вас много библиотек, которые используют entry_point
.