首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何强制构建使用已安装的包

如何强制构建使用已安装的包
EN

Stack Overflow用户
提问于 2015-06-19 15:46:51
回答 2查看 983关注 0票数 6

在服务器上,为了进行磁盘优化,我们不安装C编译器,问题是:

我想安装带有构建2.3.1的' spur‘python包,它使用的是pycrypto,它需要一个C编译器。

为了避免编译,我在服务器(Suse 11SP2)上安装了rpm pycrypto (python-pycrypto-2.6-31.7.x86_64.rpm)。我可以用“pip冻结”来检查是否安装了pycrypto:

代码语言:javascript
复制
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和packages= pycrypto,但它们没有被考虑在内。我还试着做了:

代码语言:javascript
复制
python bootstrap.py --allow-site-packages
bin/buildout

但这也无济于事。

我能做些什么来避免构建出来,编译已经从rpm编译和安装的包?

这是buildout.cfg

代码语言:javascript
复制
[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

...

和原木:

代码语言:javascript
复制
# bin/buildout
Unused options for buildout: 'allowed-eggs-from-site-packages' 'include-site-packages'.
Installing eggs.
Getting distribution for 'pycrypto!=2.4,>=2.1'.
configure: error: in `/tmp/easy_install-QFXca_/pycrypto-2.6.1':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "build/bdist.linux-x86_64/egg/setuptools/command/easy_install.py", line 2254, in main

  File "/usr/lib64/python2.6/distutils/core.py", line 152, in setup
    dist.run_commands()
  File "/usr/lib64/python2.6/distutils/dist.py", line 975, in run_commands
    self.run_command(cmd)
  File "/usr/lib64/python2.6/distutils/dist.py", line 995, in run_command
    cmd_obj.run()
  File "build/bdist.linux-x86_64/egg/setuptools/command/easy_install.py", line 380, in run

  File "build/bdist.linux-x86_64/egg/setuptools/command/easy_install.py", line 610, in easy_install

  File "build/bdist.linux-x86_64/egg/setuptools/command/easy_install.py", line 659, in install_item

  File "build/bdist.linux-x86_64/egg/setuptools/command/easy_install.py", line 842, in install_eggs

  File "build/bdist.linux-x86_64/egg/setuptools/command/easy_install.py", line 1070, in build_and_install

  File "build/bdist.linux-x86_64/egg/setuptools/command/easy_install.py", line 1056, in run_setup

  File "build/bdist.linux-x86_64/egg/setuptools/sandbox.py", line 240, in run_setup
  File "/usr/lib64/python2.6/contextlib.py", line 34, in __exit__
    self.gen.throw(type, value, traceback)
  File "build/bdist.linux-x86_64/egg/setuptools/sandbox.py", line 193, in setup_context
  File "/usr/lib64/python2.6/contextlib.py", line 34, in __exit__
    self.gen.throw(type, value, traceback)
  File "build/bdist.linux-x86_64/egg/setuptools/sandbox.py", line 164, in save_modules
  File "build/bdist.linux-x86_64/egg/setuptools/sandbox.py", line 139, in resume
  File "build/bdist.linux-x86_64/egg/setuptools/sandbox.py", line 152, in save_modules
  File "build/bdist.linux-x86_64/egg/setuptools/sandbox.py", line 193, in setup_context
  File "build/bdist.linux-x86_64/egg/setuptools/sandbox.py", line 237, in run_setup
  File "build/bdist.linux-x86_64/egg/setuptools/sandbox.py", line 267, in run
  File "build/bdist.linux-x86_64/egg/setuptools/sandbox.py", line 236, in runner
  File "build/bdist.linux-x86_64/egg/setuptools/sandbox.py", line 46, in _execfile
  File "/tmp/easy_install-QFXca_/pycrypto-2.6.1/setup.py", line 456, in <module>
  File "/usr/lib64/python2.6/distutils/core.py", line 152, in setup
    dist.run_commands()
  File "/usr/lib64/python2.6/distutils/dist.py", line 975, in run_commands
    self.run_command(cmd)
  File "/usr/lib64/python2.6/distutils/dist.py", line 995, in run_command
    cmd_obj.run()
  File "build/bdist.linux-x86_64/egg/setuptools/command/bdist_egg.py", line 160, in run
  File "build/bdist.linux-x86_64/egg/setuptools/command/bdist_egg.py", line 146, in call_command
  File "/usr/lib64/python2.6/distutils/cmd.py", line 333, in run_command
    self.distribution.run_command(command)
  File "/usr/lib64/python2.6/distutils/dist.py", line 995, in run_command
    cmd_obj.run()
  File "build/bdist.linux-x86_64/egg/setuptools/command/install_lib.py", line 10, in run
  File "/usr/lib64/python2.6/distutils/command/install_lib.py", line 112, in build
    self.run_command('build_ext')
  File "/usr/lib64/python2.6/distutils/cmd.py", line 333, in run_command
    self.distribution.run_command(command)
  File "/usr/lib64/python2.6/distutils/dist.py", line 995, in run_command
    cmd_obj.run()
  File "/tmp/easy_install-QFXca_/pycrypto-2.6.1/setup.py", line 251, in run
  File "/usr/lib64/python2.6/distutils/cmd.py", line 333, in run_command
    self.distribution.run_command(command)
  File "/usr/lib64/python2.6/distutils/dist.py", line 995, in run_command
    cmd_obj.run()
  File "/tmp/easy_install-QFXca_/pycrypto-2.6.1/setup.py", line 278, in run
RuntimeError: autoconf error
An error occurred when trying to install pycrypto 2.6.1. Look above this message for any errors that were output by easy_install.
While:
  Installing eggs.
  Getting distribution for 'pycrypto!=2.4,>=2.1'.
Error: Couldn't install: pycrypto 2.6.1
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-26 07:26:33

我找到了一个解决办法:

我刚刚创建了一个鸡蛋链接文件到开发-鸡蛋dir:

代码语言:javascript
复制
$ cat develop-eggs/pycrypto.egg-link 
/usr/lib64/python2.6/site-packages
票数 4
EN

Stack Overflow用户

发布于 2015-06-23 21:29:50

没有证据表明zc.buildout > 1.7.1支持include-site-packages,也没有allowed-eggs-from-site-packages

在我的本地机器上,我搜索了以下版本的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

查看https://pypi.python.org/pypi/zc.buildout/1.7.1上的自述文件。这些特性是在zc.buildout 1.5.0附近引入的。支持这些特性的最后一个版本是1.7.1。

他们用zc.buildout 2.0.0进行了某种重新发射.

引用changlog的2.0.0版本:

这是一个向后兼容的buildout版本,试图纠正buildout 1中的错误。 构建不再试图提供与系统Python安装完全或部分隔离。如果您想要隔离,可以在虚拟环境中使用buildout,或者首先使用Python的干净构建。

在您的例子中,这意味着,如果您想使用这些特性,您需要使用zc.buildout 1.7.1

同样重要的是,不可能同时使用这两个选项。使用allowed-eggs-from-site-packages (only specific packages)include-site-packages

我想您使用的是boostrap.py版本1:http://downloads.buildout.org/1/bootstrap.py

此版本不支持“--允许-站点-包”选项,因为它打算与处理这种情况的zc.buildout 1.x一起使用(或至少1.5.x)。

嗯,经过这短短的建设历史之旅,我想以下两点将解决你的问题:

然后python bootstrap.py --allow-site-packages按预期工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30942257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档