繁体   English   中英

在RHEL 7.2上同时安装Python 2.7.8和2.7.5的问题

[英]Issue with installing Python 2.7.8 alongside 2.7.5 on RHEL 7.2

我有一个安装了Red Hat Linux 7.2的Amazon EC2实例。 它在系统范围内安装了Python 2.7.5。

我已经编译了Python 2.7.8的替代安装(这是我在尝试复制的另一个环境中使用的安装)。 我将使用它来创建一个virtualenv来启动我的Django应用程序。

但是调用python2.7总是使我进入系统范围的python 2.7.5解释器。

我按照以下说明进行操作: http : //toomuchdata.com/2014/02/16/how-to-install-python-on-centos/

$ sudo yum groupinstall 'development tools'
$ sudo yum install  zlib-dev openssl-devel sqlite-devel bzip2-devel
$ sudo yum install wget
$ sudo wget http://www.python.org/ftp/python/2.7.8/Python-2.7.8.tar.xz
$ sudo yum install xz-libs
$ xz -d Python-2.7.8.tar.xz
$ tar -xvf Python-2.7.8.tar
$ cd Python-2.7.8

编辑文件/etc/ld.so.conf以添加该行

/usr/local/lib

$sudo /sbin/ldconfig --> make the dynamic linker aware of the change

$sudo ./configure --prefix=/usr/local  --enable-unicode=ucs4  --enable-shared
$make

我收到以下消息,但不确定是否与我的问题有关。

Python build finished, but the necessary bits to build these modules were not found:
_bsddb             _tkinter           bsddb185
dbm                dl                 gdbm
imageop            sunaudiodev
To find the necessary bits, look in setup.py in detect_modules() for the module's name.

$sudo make altinstall

$which python
/usr/bin/python ---> system wide Python 2.7.5
$which python2.7
/usr/local/bin/python2.7 ---> this should point to Python 2.7.8 that was compiled and installed.

但是调用python2.7指向系统范围的Python 2.7.5解释器:

$python2.7
Python 2.7.5 (default, Oct 11 2015, 17:47:16)
[GCC 4.8.3 20140911 (Red Hat 4.8.3-9)] on linux2

为什么会这样呢?

仅供参考,我的PATH确实包含/ usr / local / bin。

$echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin:/home/ec2-user/bin

参考: http : //koansys.com/tech/building-python-with-enable-shared-in-non-standard-location “我可以使用” ldd“将其库添加到系统缓存中,这样可以正常工作只要没有其他相同版本的python需要它。”

我通过从/etc/ld.so.conf中删除/ usr / local / lib而不是通过-rpath选项指定LDFLAGS来解决问题,如下所示:

$sudo ./configure --prefix=/usr/local/python --enable-unicode=ucs4 --enable-shared LDFLAGS="-Wl,-rpath /usr/local/python/lib"

请注意,它是-W1而不是-W1(即小写L而不是数字1)。 我花了几个小时弄清楚那个错误! 感谢gcc soname无法识别的命令行指出了这一点。

$make
$sudo make altinstall

这行得通,并且从此路径调用Python解释器可以正常工作:

$/usr/local/python/bin/python2.7 -- version
Python 2.7.8

网络上的大多数教程都说明了如何并排安装两个不同版本的Python,例如Python 2.6.x和2.7.x或Python 2.7.x和3.3.x。

但是,当两个安装都是Python 2.7.x时,如果在/etc/ld.so.conf中指定了自定义安装的路径,则似乎会出现问题-也许要拾取的库属于系统默认值...我仍然不了解幕后情况。

我也将/ usr / local / python / bin添加到.bashrc中的PATH中。

但是,在后续安装setuptools,pip,virtualenv和virtualenvwrapper的步骤中,我仍然必须显式调用python2.7或pip2.7的完整路径,否则该软件包将安装在/usr/lib/python2.7/site中-packages /而不是/usr/local/python/lib/python2.7/site-packages。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM