Python 如何强制构建使用已安装的软件包
在服务器上,为了优化磁盘,我们不安装C编译器, 问题是: 我想用buildout 2.3.1安装“spur”python包, spur正在使用pycrypto,这需要C编译器 为了避免编译,我在服务器(Suse 11SP2)上安装了rpm python pycrypto(python-pycrypto-2.6-31.7.x86_64.rpm)。我可以通过“pip冻结”检查pycrypto是否已安装:Python 如何强制构建使用已安装的软件包,python,buildout,Python,Buildout,在服务器上,为了优化磁盘,我们不安装C编译器, 问题是: 我想用buildout 2.3.1安装“spur”python包, spur正在使用pycrypto,这需要C编译器 为了避免编译,我在服务器(Suse 11SP2)上安装了rpm python pycrypto(python-pycrypto-2.6-31.7.x86_64.rpm)。我可以通过“pip冻结”检查pycrypto是否已安装: pip freeze lxml==2.1.2 mod-python==3.3.1 Numer
pip freeze
lxml==2.1.2
mod-python==3.3.1
Numeric==24.2
numpy==1.3.0
pycrypto==2.6
pywbem==0.7.0
PyXML==0.8.4
然而,当我开始构建时,它仍然尝试使用不存在的C编译器构建pycrypto
因此,我在buildout.cfg中添加了include site packages=true和允许的来自site packages=pycrypto的鸡蛋,但没有考虑它们。
我还试着做了一个:
python bootstrap.py --allow-site-packages
bin/buildout
但这也无济于事
如何避免编译已经从rpm编译和安装的包
这是buildout.cfg
[buildout]
newest = false
extensions = gp.vcsdevelop
develop-dir = src
parts = eggs tests wsgi
include-site-packages = true
allowed-eggs-from-site-packages = pycrypto
eggs =
Django==1.4.8
ordereddict
ipython==0.13.2
django-webtest
django-grappelli<2.5.0
django-bootstrap3-datetimepicker
z3c.recipe.usercrontab
rrdgraphs
south
achilterm
pynag
pyaml<14
DjangoDevKit==1.0.3
Sphinx
xlwt
xlrd
spur
...
[buildout]
最新=错误
扩展=gp.vcsdevelop
开发目录=src
零件=鸡蛋测试wsgi
include site packages=true
允许来自站点包的鸡蛋=pycrypto
蛋=
Django==1.4.8
有序的
ipython==0.13.2
django网络测试
django grappelli我没有证据表明zc.buildout>1.7.1支持包含站点包
,也没有允许站点包中的鸡蛋
在我的本地机器上,我在以下版本的zc.buildout中搜索了上述功能:
- zc.buildout-1.4.4-py2.7.egg
- zc.buildout-1.6.3-py2.7.egg
- zc.buildout-1.7.1-py2.7.egg
- zc.buildout-2.0.0-py2.7.egg
- zc.buildout-2.0.1-py2.7.egg
- zc.buildout-2.1.0-py2.7.egg
- zc.buildout-2.2.0-py2.7.egg
- zc.buildout-2.2.1-py2.7.egg
- zc.buildout-2.2.3-py2.7.egg
- zc.buildout-2.2.4-py2.7.egg
- zc.buildout-2.2.5-py2.7.egg
- zc.buildout-2.3.0-py2.7.egg
- zc.buildout-2.3.1-py2.7.egg
查看自述。这些特性是在zc.buildout 1.5.0中介绍的。支持这些功能的最新版本是1.7.1
他们用zc.BuildOut2.0.0重新启动了一些程序
引用changlog 2.0.0版:
这是一个向后不兼容的buildout版本,它试图纠正buildout 1中的错误
Buildout不再试图提供与系统Python安装的完全或部分隔离。如果您想要隔离,可以将buildout与virtualenv一起使用,或者首先使用干净的Python构建
在您的情况下,这意味着,如果要使用这些功能,您需要使用zc.buildout 1.7.1
同样重要的是,不可能同时使用这两个选项。使用站点软件包中允许的鸡蛋(仅特定软件包)
,或包括站点软件包
我假设您使用的是boostrap.py版本1:
此版本不支持´--allow site packages´选项,因为它打算与处理此情况(或至少1.5.x)的zc.buildout 1.x一起使用
好吧,在经历了构建历史的短暂旅程之后,我想以下两点将解决您的问题:
- 请确保您使用的是boostrap.py 2:。只有此版本支持
--allow site packages
选项
- 确保您正在为yout boostrap.py verson使用合适的zc.buildout版本
然后python bootstrap.py--允许站点包按预期工作。我找到了一个解决方法:
我刚刚创建了一个egg链接文件到developmenteggs目录:
$ cat develop-eggs/pycrypto.egg-link
/usr/lib64/python2.6/site-packages
您正在使用哪个zc.buildout?检查输出的第一行:未使用的构建选项:“站点包中允许的鸡蛋”包括站点包。
似乎无法识别这些选项。我已经使用了最新的引导并重新安装了构建,该版本是2.3.1,应该管理选项“允许从站点包生成鸡蛋”“包含-site-packages”。问题是“python bootstrap.py…”实际上正在安装最新的构建版本。我不想手动安装旧的,因为我可能出于其他原因需要最新的。这是鸡蛋鸡的问题。是的,“python bootstrap.py--allow site packages”正在安装buildout 2.3.1
$ cat develop-eggs/pycrypto.egg-link
/usr/lib64/python2.6/site-packages