CentOS (rel6) 默认使用 Python 2.6,但单独安装 3.3.5

CentOS (rel6) 默认使用 Python 2.6,但单独安装 3.3.5

我有一台安装了 Python(2.6)的 CentOS 服务器(rel6),但我需要 3.3+ 中的几个功能。我将 3.3 安装到一个单独的文件夹中,并创建了一个符号链接来执行它:

  1. 我安装了安装工具:yum install python-setuptools
  2. 我安装了一个需要的模块“pandas” easy_install pandas
  3. 我执行了我的 pyton 脚本,遇到了一个错误,需要我使用较新的版本
  4. 我下载并安装了 Python 3.3.5 到它自己的文件夹中,以免覆盖我的默认 python
  5. 建立了符号链接以允许我执行这个新的 python:
    • ln -s /opt/python3.3/bin/python3.3 ~/bin/py

问题是,当我使用新的 py 别名执行 python 脚本时,它没有默认安装所需的所有附加组件(明确是 MySQLdb)。

我该如何安装 MySQLdb 模块或任何其他模块,才能让新的 Python 3.3.5 安装可以访问或使用?或者有没有办法让 2.6 中的当前模块也可用于 3.3.5?

更新:

我的虚拟环境安装了以下内容

root@server [/]# source ./root/python3.3/bin/activate
(python3.3)root@server [/]#
(python3.3)root@server [/]# pip freeze
MySQL-python==1.2.5
numpy==1.8.1
pandas==0.14.0
python-dateutil==2.2
pytz==2014.4
six==1.6.1

但是当我执行导入时,它仍然失败

(python3.3)root@server [/]# python3.3 -c "import MySQLdb"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: No module named 'MySQLdb'

答案1

对于多个 Python 版本,请使用虚拟环境点子管理模块。

因此,您可以创建一个具有特定 Python 版本和模块的虚拟环境。

easy_install pip
pip install virtualenv virtualenvwrapper 

因此,当创建一个具有特定 Python 版本的新环境时

mkvirtualenv nameit -p python3.3

如果 python 有任何依赖项,只需执行以下操作:

wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-1.4.2.tar.gz

从档案中提取文件并进入其路径:

tar -xvf setuptools-1.4.2.tar.gz
cd setuptools-1.4.2

然后使用以下方式安装:

python3.3 setup.py install

您可以执行最后一步来在您拥有的 Python 版本上安装模块,只需下载并运行 python3.3.5 安装即可,但我建议您使用虚拟环境因为它可以轻松管理不同的 Python 版本及其模块。

为了顺利安装 virtualenv,请按照以下步骤操作脚步

答案2

我不确定早期版本是否适用,但使用 CentOS 6.5,您可以安装 CentOS 软件集合库存储库。这样您就可以访问某些工具的较新版本,其中之一就是 python 3.3。

您可以找到有关 SCL 的一般信息这里

你可以使用以下命令安装 SCL repo

yum install centos-release-SCL

然后你可以使用以下命令安装 Python 3.3

yum install python33

SCL 的文档是这里

答案3

解决方案:

为了解决这个问题,我创建了一个带有指定 Python(Python 3.3)的全新虚拟环境,并使用正确的安装程序(easy_install-3.3,显然是该 Python 版本专用的)来添加模块。经 pip 修正版本(pip3.3)验证,它现在似乎可以正常工作

root@server [~] easy_install pip
root@server [~] pip install virtualenv virtualenvwrapper 
root@server [~] virtualenv --python=/usr/local/bin/python3.3 py3
root@server [~] . /root/py3/bin/activate
(py3)root@server [~] easy_install-3.3 numpy
(py3)root@server [~] easy_install-3.3 scipy
(py3)root@server [~] easy_install-3.3 pandas
(py3)root@server [~] easy_install-3.3 scikit-learn
(py3)root@server [~] easy_install-3.3 PyMySQL

(py3)root@server [~]# pip3.3 freeze
PyMySQL==0.6.2
numpy==1.8.1
pandas==0.14.0
pexpect==3.2
pyinotify==0.9.4
python-dateutil==2.2
pytz==2014.4
scikit-learn==0.15.0b1
scipy==0.14.0
scpy==1.1.4
six==1.6.1

我的脚本现在可以在虚拟环境中按预期运行。

相关内容