如何使用pkg_resources手动注册分发?

时间:2009-03-01 03:40:26

标签: python google-app-engine setuptools pkg-resources

我正在尝试在Google App Engine上安装软件包。该软件包相当广泛地依赖于pkg_resources,但是无法在App Engine上运行setup.py

但是,源代码中没有特定于平台的代码,所以只需压缩源代码并将其包含在系统路径中就没有问题。我已经安装了pkg_resources版本并且也正常工作。

唯一的问题是使用pkg_resources实际注册包,因此当它调用iter_entry_points时,它可以找到相应的插件。

我需要使用哪些方法调用sys.path上的模块以及所有适当的元数据,以及如何确定元数据需要什么?

3 个答案:

答案 0 :(得分:1)

是的,对于基于setuptools的库,您需要同时部署库的“Egg”元数据。我发现最简单的方法是部署一个包含项目和所需库的整个virtualenv环境。

我手动执行了此过程,并将此代码添加到main.py,以pkg_resources将起作用的方式初始化site-packages文件夹:

import site
site.addsitedir('lib/python2.5/site-packages')

但是,您可以尝试使用appengine-monkey来自动完成大部分内容。

答案 1 :(得分:0)

在本地开发系统上,运行python setup.py bdist_egg,这将创建一个包含必要元数据的Zip存档。将其添加到sys.path,它应该可以正常运行。

答案 2 :(得分:0)

像往常一样为包创建setup.py,然后使用“setup.py sdist --formats = zip”来构建源zip。构建的源zip将包含一个.egg-info元数据目录,然后pkg_resources可以找到该目录。或者,您可以对所有包使用bdist_egg。