在Python中使用Google的protobuf而无需进行安装

7
我觉得当我在Python中使用protobuf时,需要先安装它,这样我也可以安装setuptools。对我来说,这似乎严重限制了可移植性,因为我必须在想要使用任何使用protobuf的Python代码的机器上安装protobuf。
所以我的问题是:是否有一种方法可以将protobuf打包为Python,以便可以将其与使用它的Python代码一起分发?
如果您有任何信息,请告诉我。
1个回答

3

该软件包包含一个实验性的 C++ 扩展,而安装文件会生成 Python 文件,但默认情况下会禁用扩展,你应该可以将 setup.py build 的结果与你的脚本一起使用。

请注意,Python 包仍需要安装命令行工具。该工具用于为你生成一些 Python 代码。

一旦可用,请运行:

cd python
python setup.py build

build/lib/google目录复制到您的脚本分发目录中,需要在sys.path上才能导入。

或者,使用setup.py bdist --formats=zip并将生成的zip文件路径(位于dist/protobuf-<version>.<platform>-<architecture>.zip)添加到sys.path中。重命名也没问题。

请注意,该包使用命名空间,因此需要可用的pkg_resources模块。 它仅用于在google/__init__.py中声明google命名空间。


我尝试过这个,但是无法弄清楚该怎么做。您能否给我一些指针,告诉我如何处理zip和egg文件呢?仅仅将它们放在PythonPath上似乎行不通。 - Cornelius
@Cornelius:我正在更新的过程中;一个“构建”就足够了,真的。 - Martijn Pieters
啊,是的,那是我的第一猜想,但如果我这样做,就会收到错误消息:“ImportError:没有名为pkg_resources的模块”。据说是因为我没有安装setuptools。这就是你所说的命令行工具吗? - Cornelius
@Cornelius:不,pkg_resources是setuptools分发的一部分。我猜你也得在你的打包中包含它。为什么不直接使用setuptools基础设施,让pipeasy_install为您处理安装和依赖关系呢? - Martijn Pieters
是的,为了让它起作用,你也必须将 pkg_resources.py 添加到你的路径中。我在这里也找到了这个答案:https://dev59.com/8kjSa4cB1Zd3GeqPItAx。你能更新一下你的答案吗?然后我会把它标记为正确的。感谢你的帮助。 - Cornelius

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接