У меня есть сервер CentOS (rel6), на котором установлен python (2.6), но мне нужно было несколько функций в 3.3+. Я установил 3.3 в отдельную папку и сделал символическую ссылку для ее выполнения:
Проблема в том, что когда я выполняю скрипт python с моим новым псевдонимом py, у него нет всех необходимых надстроек (явно 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'
Для нескольких версий Python используйте virtualenv и пип управлять модулями.
Таким образом, вы можете создать виртуальную среду с определенными версиями и модулями 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, но я рекомендую вам использовать virtualenv вызвать его простой режим управления различными версиями python и его модулями.
Чтобы правильно установить virtualenv без особых проблем, следуйте этим шаги
РЕШЕНИЕ:
Чтобы решить эту проблему, я создал новый virtualenv с указанным 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
Мой сценарий теперь работает, как и ожидалось, в моей виртуальной среде.
Я не уверен насчет более ранних версий, но с CentOS 6.5 вы можете установить репозиторий CentOS Software Collections Library. Это дает вам доступ к более новым версиям некоторых инструментов, и python 3.3 является одним из них.
Вы можете найти общую информацию о SCL Вот.
Вы можете установить репозиторий SCL с помощью
yum install centos-release-SCL
Затем вы можете установить python 3.3 с помощью
yum install python33
Документация для SCL: Вот.