2015-06-19 83 views
6

在服務器上,磁盤優化,我們不安裝C編譯器, 這裏的問題是:如何強制擴建使用已安裝的軟件包

我想安裝「骨刺」蟒蛇包buildout 2.3.1, spur正在使用需要C編譯器的pycrypto。

爲避免編譯,我在服務器(Suse 11SP2)上安裝了rpm python-pycrypto(python-pycrypto-2.6-31.7.x86_64.rpm)。我可以檢查與「畫中畫凍結」該pycrypto安裝:

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 

然而,當我開始擴建,但仍設法建立pycrypto與C編譯器不存在。

因此,我在buildout.cfg中添加了include-site-packages = true和allowed-eggs-from-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 

... 

和日誌:

# 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 
+0

哪個zc.buildout您使用的?檢查輸出的第一行:'未使用的構建選項:'allowed-eggs-from-site-packages''include-site-packages'。「看起來這些選項無法識別。 – Mathias

+0

我已經採取了最新的引導和重新安裝buildout,版本是2.3.1,並應該管理選項'允許蛋現場包''包括網站包' – Eric

回答

4

我找到了一個解決辦法:

我剛剛創建了一個雞蛋,鏈接文件到開發雞蛋DIR:

$ cat develop-eggs/pycrypto.egg-link 
/usr/lib64/python2.6/site-packages 
0

我沒有證據證明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 0.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做了一些重新啓動。擴建2.0.0 ...從changlog

報價,版本2.0.0:

這是擴建的,試圖糾正擴建1

擴建犯了錯誤後向兼容版本不再嘗試從系統Python安裝中提供完全或部分隔離。如果你想隔離,使用virtualenv構建,或者使用一個乾淨的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

該版本不支持' - 讓現場-packages'選項,因爲它打算與zc.buildout 1使用.x,它處理這種情況(或至少1.5.x)。


那麼,在擴建這個歷史的短途旅行後,我想以下兩點就能解決你的問題:

Then python bootstrap.py --allow-site-packages按預期工作。

+0

問題是,'蟒蛇bootstrap.py ...'實際上是安裝最新的buildout版本。我不想手動安裝一個較舊的,因爲我可能因爲其他原因需要最新的一個。這是雞蛋問題。 – Eric

+0

但您的bootstap.py來自https://bootstrap.pypa.io/bootstrap-buildout.py? – Mathias

+0

是的,'python bootstrap.py --allow-site-packages'正在安裝buildout 2.3.1 – Eric

相關問題