我有一台安装了 Python(2.6)的 CentOS 服务器(rel6),但我需要 3.3+ 中的几个功能。我将 3.3 安装到一个单独的文件夹中,并创建了一个符号链接来执行它:
- 我安装了安装工具:yum install python-setuptools
- 我安装了一个需要的模块“pandas” easy_install pandas
- 我执行了我的 pyton 脚本,遇到了一个错误,需要我使用较新的版本
- 我下载并安装了 Python 3.3.5 到它自己的文件夹中,以免覆盖我的默认 python
- 获得http://www.python.org/ftp/python/3.3.5/Python-3.3.5.tar.xz
- tar xJf ./Python-3.3.5.tar.xz
- cd./Python-3.3.5
- ./configure --prefix=/opt/python
- 制作
- 进行安装
- 建立了符号链接以允许我执行这个新的 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
答案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
我的脚本现在可以在虚拟环境中按预期运行。