在zc.buildout中,如何安装egg A,然后安装需要egg A才能正确安装的egg B?
Posted
技术标签:
【中文标题】在zc.buildout中,如何安装egg A,然后安装需要egg A才能正确安装的egg B?【英文标题】:In zc.buildout, how do I install egg A, then install egg B which needs egg A to install correctly? 【发布时间】:2012-02-25 01:13:00 【问题描述】:具体来说,这是我遇到的情况:
我正在使用 zc.buildout 安装需要 pymssql 的应用程序。 Pymssql 需要 Cython 才能正确安装。但是,我不想修改我的运行环境,所以我想做类似的事情:
-
安装 Cython
将 Cython 加载到构建中
安装 Pymssql。
我认为 Buildout 已经这样做了,但它看起来更像是检查 setup.cfg 以确保安装了任何明确声明为必要的内容。目前我的扩建看起来像:
[buildout]
parts = required-eggs
...
[required-eggs]
eggs = Cython
pymssql
Cython 安装良好。不幸的是 pymssql 没有:
return self.build_and_install(setup_script, setup_base)
File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 1101, in build_and_install
self.run_setup(setup_script, setup_base, args)
File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 1090, in run_setup
run_setup(setup_script, args)
File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 29, in run_setup
lambda: execfile(
File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 70, in run
return func()
File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 31, in <lambda>
'__file__':setup_script, '__name__':'__main__'
File "setup.py", line 41, in <module>
ImportError: No module named Cython.Distutils
因此,我认为 Cython 是作为鸡蛋安装的,但没有加载到正在运行 buildout 的 python 进程中。 buildout 中是否有一些配置可以让我这样做?
【问题讨论】:
【参考方案1】:pymssql
包已经将Cython
egg 声明为setup_requires
依赖项,但没有给distutils
时间来安装它。仅仅在setup_requires
中列出它们,但仍然尝试在模块范围内导入它们(就像pymssql
所做的那样)是不够的。
setup.py
模块必须重新构建,以便在解析 setup_requires
行并且那里列出的依赖项可用之前不导入 Cython
依赖项。基本上,它需要定义自己的 build_cmd
类,当实例化时,导入 Cython
依赖项并在当时而不是之前包装该类。
您可能可以创建一个自定义构建配方,该配方使用 Cython
作为依赖项,然后可以安装 pymssql
依赖项和 Cython
在 buildout 执行您的配方时安装,但这是一个石膏pymssql
应该处理的这个伤口,真的。
【讨论】:
感谢您的回答,这有助于我更好地了解实际情况!我想我将只包含一个预编译的 pymssql 并处理它的问题。以上是关于在zc.buildout中,如何安装egg A,然后安装需要egg A才能正确安装的egg B?的主要内容,如果未能解决你的问题,请参考以下文章
zc.buildout构建项目时报错‘AttributeError: '_NamespacePath' object has no attribute 'sort'’(
安装 xadmin 报错: Command "python setup.py egg_info" failed with error code 1 in C:UsersPyth(示