2014-09-04 114 views
0

我有Python 2.6.6。在我的Red Hat Linux VM上运行某个脚本。需要升级到3.4.1。试图无法在Red Hat Linux上升级Python

easy_install --upgrade python 

但我总是得到

bash-4.1# easy_install --upgrade python 
Searching for python 
Reading http://pypi.python.org/simple/python/ 
Reading http://www.python.org 
Reading http://www.python.org/2.3 
Reading http://www.python.org/2.4 
Reading http://www.python.org/2.4.1 
Reading http://www.python.org/2.5 
Reading http://www.python.org/download/ 
Best match: Python 3.4.1 
Downloading https://www.python.org/ftp/python/3.4.1/Python-3.4.1.tgz 
Processing Python-3.4.1.tgz 
Running Python-3.4.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-Qd_HVP/Python-3.4.1/egg-dist-tmp-iqaG4H 
Traceback (most recent call last): 
    File "/usr/bin/easy_install", line 9, in <module> 
    load_entry_point('distribute==0.6.10', 'console_scripts', 'easy_install')() 
    File "/usr/lib/python2.6/site-packages/setuptools/command/easy_install.py", line 1715, in main 
    with_ei_usage(lambda: 
    File "/usr/lib/python2.6/site-packages/setuptools/command/easy_install.py", line 1696, in with_ei_usage 
    return f() 
    File "/usr/lib/python2.6/site-packages/setuptools/command/easy_install.py", line 1719, in <lambda> 
    distclass=DistributionWithoutHelpCommands, **kw 
    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 "/usr/lib/python2.6/site-packages/setuptools/command/easy_install.py", line 236, in run 
    self.easy_install(spec, not self.no_deps) 
    File "/usr/lib/python2.6/site-packages/setuptools/command/easy_install.py", line 472, in easy_install 
    return self.install_item(spec, dist.location, tmpdir, deps) 
    File "/usr/lib/python2.6/site-packages/setuptools/command/easy_install.py", line 502, in install_item 
    dists = self.install_eggs(spec, download, tmpdir) 
    File "/usr/lib/python2.6/site-packages/setuptools/command/easy_install.py", line 681, in install_eggs 
    return self.build_and_install(setup_script, setup_base) 
    File "/usr/lib/python2.6/site-packages/setuptools/command/easy_install.py", line 958, in build_and_install 
    self.run_setup(setup_script, setup_base, args) 
    File "/usr/lib/python2.6/site-packages/setuptools/command/easy_install.py", line 947, in run_setup 
    run_setup(setup_script, args) 
    File "/usr/lib/python2.6/site-packages/setuptools/sandbox.py", line 29, in run_setup 
    lambda: execfile(
    File "/usr/lib/python2.6/site-packages/setuptools/sandbox.py", line 70, in run 
    return func() 
    File "/usr/lib/python2.6/site-packages/setuptools/sandbox.py", line 31, in <lambda> 
    {'__file__':setup_script, '__name__':'__main__'} 
    File "setup.py", line 1865 
    exec(f.read(), globals(), fficonfig) 
SyntaxError: unqualified exec is not allowed in function 'configure_ctypes' it contains a nested function with free variables 
bash-4.1# SyntaxError: unqualified exec is not allowed in function 'configure_ctypes' it contains a nested function with free variables 

当然,我不能从计算机上删除的Python 2.6.6为很多系统脚本依赖于它。任何想法该怎么办?

+0

简易安装用于升级包。检查这个安装Python 3 http://stackoverflow.com/questions/8087184/installing-python3-on-rhel – ChillarAnand 2014-09-04 20:29:48

+0

“当然,我不能从机器上删除Python 2.6.6,因为很多系统脚本都依赖于它。”根据定义,这意味着您无法升级它。你可以做的是并排安装一个新的。幸运的是,Python可以轻松拥有两个不同的次要版本,甚至更容易拥有两个不同的主要版本。例如,你可以使用'python3'或'python3.4'来运行3.4版本,即使2。6在你的PATH中更高,脚本('easy_install','pip','ipython'等)将得到类似的处理。 – abarnert 2014-09-04 20:32:55

+0

使用virtualenvirnonment – Vor 2014-09-04 20:34:01

回答

0

您将需要找到Python-3.4包的源代码,或者自己构建它。

快速搜索发现http://wiki.guibin.info/?p=133自己构建Python-3.4。

随着一些更多的搜索,你可能能够找到RPM包的来源,但当然这取决于你相信那些包 - 我不会在生产中使用随机RPM!

1

我通常建议不要在RPM管理的发行版(如RHEL)上手动升级软件包。如果需要升级,只能通过rpm进行升级。 rpm工具存在的原因以及为什么使用它。实际上,有不止一个原因。它有一个重要的目的,手动安装或升级包完全颠覆了它。

如果它是绝对必要的,下面的过程应该如下:

  1. 抓住源RPM为Red Hat的Python包。
  2. 抓取新版本的python的源代码。
  3. 找出Red Hat的Python RPM中的哪些补丁,如果有的话,仍然适用于新版本的python。
  4. 使用python RPM中的spec文件来构建rpms与新版本的python。
  5. 希望第4步工作。如果是这样,耶!安装它。如果没有,找出原因,根据需要修补spec文件,回到步骤#4。
  6. 您现在安装了新版本的python。检查使用python的其他RHEL rpms是否与新版本中断。如果没有,耶!你完成了。如果有什么东西坏了,找出该怎么办。

许多RHEL系统管理工具和脚本都使用Python。由于安装了新的python包,这并不是完全不可能的,因为某些事情最终会被破坏。

使用RHEL的全部理由是拥有一个商业支持的稳定Linux发行版,其所有组件都经过互操作性测试。升级它的随机部分忽略了RHEL的全部要点;通常您升级到RHEL的全新版本,而不是单个软件包;但是,对于他们自己的...