Не удалось установить MySQL-python - программирование
Подтвердить что ты не робот

Не удалось установить MySQL-python

Хорошо, что я недавно обновился с Ubuntu 10.04 до 12.04

Только перед лицом множества проблем. Я новичок в этом, поэтому вам, возможно, придется рассказать мне более подробно или поэтапно.

У меня был проект django, который работал отлично, но теперь он дает мне эту ошибку:

  File "/usr/local/lib/python2.7/site-packages/django/db/backends/mysql/base.py", line 16, in <module>
    raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e) django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: libmysqlclient_r.so.16: cannot open shared object file: No such file or directory

или в python:

>>> import MySQLdb
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "build/bdist.linux-i686/egg/MySQLdb/__init__.py", line 19, in <module>
  File "build/bdist.linux-i686/egg/_mysql.py", line 7, in <module>
  File "build/bdist.linux-i686/egg/_mysql.py", line 6, in __bootstrap__
ImportError: libmysqlclient_r.so.16: cannot open shared object file: No such file or directory

В любом случае я думал, что есть некоторые проблемы с моим MySQL-python, поэтому я попытался переустановить его.

sudo pip install mysql-python

дает:

Downloading/unpacking mysql-python
  Running setup.py egg_info for package mysql-python
    The required version of distribute (>=0.6.28) is not available,
    and can't be installed while this script is running. Please
    install a more recent version first, using
    'easy_install -U distribute'.

    (Currently using distribute 0.6.24dev-r0 (/usr/lib/python2.7/dist-packages))
    Complete output from command python setup.py egg_info:
    The required version of distribute (>=0.6.28) is not available,

and can't be installed while this script is running. Please

install a more recent version first, using

'easy_install -U distribute'.



(Currently using distribute 0.6.24dev-r0 (/usr/lib/python2.7/dist-packages))

----------------------------------------
Command python setup.py egg_info failed with error code 2 in /tmp/pip-build/mysql-python
Storing complete log in /home/nabeel/.pip/pip.log

Если я это сделаю:

sudo easy_install -U distribute

Он дает эту ошибку:

Searching for distribute
Reading http://pypi.python.org/simple/distribute/
Reading http://packages.python.org/distribute
Best match: distribute 0.6.29
Downloading http://pypi.python.org/packages/source/d/distribute/distribute-0.6.29.tar.gz#md5=1aad767bfca8bebaccafee25f85696cf
Processing distribute-0.6.29.tar.gz
Running distribute-0.6.29/setup.py -q bdist_egg --dist-dir /tmp/easy_install-K8ZuMX/distribute-0.6.29/egg-dist-tmp-Fj0gj_
Before install bootstrap.
Scanning installed packages
Setuptools installation detected at /usr/local/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg
Egg installation
Patching...
Renaming /usr/local/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg to /usr/local/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg.OLD.1350776909.4
Patching complete.
Relaunching...
Traceback (most recent call last):
  File "/usr/local/bin/easy_install", line 9, in <module>
    load_entry_point('distribute==0.6.8', 'console_scripts', 'easy_install')()
  File "/usr/local/lib/python2.7/site-packages/distribute-0.6.8-py2.7.egg/setuptools/command/easy_install.py", line 1708, in main
    with_ei_usage(lambda:
  File "/usr/local/lib/python2.7/site-packages/distribute-0.6.8-py2.7.egg/setuptools/command/easy_install.py", line 1696, in with_ei_usage
    return f()
  File "/usr/local/lib/python2.7/site-packages/distribute-0.6.8-py2.7.egg/setuptools/command/easy_install.py", line 1712, in <lambda>
    distclass=DistributionWithoutHelpCommands, **kw
  File "/usr/local/lib/python2.7/distutils/core.py", line 152, in setup
    dist.run_commands()
  File "/usr/local/lib/python2.7/distutils/dist.py", line 953, in run_commands
    self.run_command(cmd)
  File "/usr/local/lib/python2.7/distutils/dist.py", line 972, in run_command
    cmd_obj.run()
  File "/usr/local/lib/python2.7/site-packages/distribute-0.6.8-py2.7.egg/setuptools/command/easy_install.py", line 236, in run
    self.easy_install(spec, not self.no_deps)
  File "/usr/local/lib/python2.7/site-packages/distribute-0.6.8-py2.7.egg/setuptools/command/easy_install.py", line 471, in easy_install
    return self.install_item(spec, dist.location, tmpdir, deps)
  File "/usr/local/lib/python2.7/site-packages/distribute-0.6.8-py2.7.egg/setuptools/command/easy_install.py", line 501, in install_item
    dists = self.install_eggs(spec, download, tmpdir)
  File "/usr/local/lib/python2.7/site-packages/distribute-0.6.8-py2.7.egg/setuptools/command/easy_install.py", line 680, in install_eggs
    return self.build_and_install(setup_script, setup_base)
  File "/usr/local/lib/python2.7/site-packages/distribute-0.6.8-py2.7.egg/setuptools/command/easy_install.py", line 957, in build_and_install
    self.run_setup(setup_script, setup_base, args)
  File "/usr/local/lib/python2.7/site-packages/distribute-0.6.8-py2.7.egg/setuptools/command/easy_install.py", line 946, in run_setup
    run_setup(setup_script, args)
  File "/usr/local/lib/python2.7/site-packages/distribute-0.6.8-py2.7.egg/setuptools/sandbox.py", line 29, in run_setup
    lambda: execfile(
  File "/usr/local/lib/python2.7/site-packages/distribute-0.6.8-py2.7.egg/setuptools/sandbox.py", line 70, in run
    return func()
  File "/usr/local/lib/python2.7/site-packages/distribute-0.6.8-py2.7.egg/setuptools/sandbox.py", line 31, in <lambda>
    {'__file__':setup_script, '__name__':'__main__'}
  File "setup.py", line 131, in <module>
  File "/tmp/easy_install-K8ZuMX/distribute-0.6.29/distribute_setup.py", line 368, in _before_install
  File "/tmp/easy_install-K8ZuMX/distribute-0.6.29/distribute_setup.py", line 441, in _fake_setuptools
  File "/tmp/easy_install-K8ZuMX/distribute-0.6.29/distribute_setup.py", line 450, in _relaunch
NameError: global name '_cmd1' is not defined

Снова я перешел по этой ссылке: http://pypi.python.org/pypi/setuptools/0.6c11 загрузить и установить setuptools.. Я также установил последнюю версию 0.6.8 отсюда: http://pypi.python.org/pypi/distribute/0.6.8

Я также попытался удалить предыдущие версии и установить обратно, но он, похоже, не работает. У меня установлен Python 2.7.3

Может кто-нибудь, пожалуйста, объясните мне, что происходит... Как я могу установить Mysqldb...

Я также запускал эти команды в оболочке:

sudo apt-get install mysql-server mysql-client python-mysqldb libmysqlclient-dev python-dev

Но это не помогло...

ОБНОВЛЕНИЕ Я ТОЛЬКО СКАЗАЛ ЭТО И ПОЛУЧИТЬ ЭТУ ОШИБКУ:

[email protected]:~$ pip uninstall setuptools
Uninstalling distribute:
  /usr/bin/easy_install
  /usr/bin/easy_install-2.7
  /usr/lib/python2.7/dist-packages/distribute-0.6.24dev_r0.egg-info
  /usr/lib/python2.7/dist-packages/easy_install.pyc
  /usr/lib/python2.7/dist-packages/pkg_resources.pyc
  /usr/lib/python2.7/dist-packages/setuptools
  /usr/lib/python2.7/dist-packages/site.pyc
  /usr/share/pyshared/easy_install.py
  /usr/share/pyshared/pkg_resources.py
  /usr/share/pyshared/site.py
Proceed (y/n)? y
  Successfully uninstalled distribute
[email protected]:~$ sudo easy_install -U distribute
Searching for distribute
Reading http://pypi.python.org/simple/distribute/
Reading http://packages.python.org/distribute
Best match: distribute 0.6.29
Downloading http://pypi.python.org/packages/source/d/distribute/distribute-0.6.29.tar.gz#md5=1aad767bfca8bebaccafee25f85696cf
Processing distribute-0.6.29.tar.gz
Running distribute-0.6.29/setup.py -q bdist_egg --dist-dir /tmp/easy_install-Xcer8d/distribute-0.6.29/egg-dist-tmp-K0E7gP
Before install bootstrap.
Scanning installed packages
Setuptools installation detected at /usr/local/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg
Egg installation
Already patched.
After install bootstrap.
Creating /usr/local/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg-info
Creating /usr/local/lib/python2.7/site-packages/setuptools.pth
Removing distribute 0.6.8 from easy-install.pth file
Adding distribute 0.6.29 to easy-install.pth file
Installing easy_install script to /usr/local/bin
Installing easy_install-2.7 script to /usr/local/bin

Installed /usr/local/lib/python2.7/site-packages/distribute-0.6.29-py2.7.egg
Processing dependencies for distribute
Finished processing dependencies for distribute
[email protected]:~$ sudo pip install mysql-python
Traceback (most recent call last):
  File "/usr/local/bin/pip", line 5, in <module>
    from pkg_resources import load_entry_point
ImportError: No module named pkg_resources

ОБНОВЛЕНИЕ 2: Мне удалось установить virtualenv теперь в среде мне также удалось установить MySQLdb. Вот ошибка, которую я получаю при запуске моего сервера:

sudo python manage.py syncdb

Я получаю эту ошибку:

  File "/usr/local/lib/python2.7/site-packages/django/db/backends/mysql/base.py", line 16, in <module>
    raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: libmysqlclient_r.so.16: cannot open shared object file: No such file or directory


(myenv)[email protected]:~/workspace/gteam/metrics$ python
    Python 2.7.3 (default, Oct  6 2012, 21:57:36) 
    [GCC 4.4.3] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import MySQLdb
    >>> exit()
4b9b3361

Ответ 1

Использование virtualenv

Прежде всего. Убедитесь, что у вас есть Mysql, Setuptools и некоторые необходимые вещи:

sudo apt-get install mysql-server
sudo apt-get install python-setuptools python-dev build-essential

Теперь установите VirtualEnv:

sudo easy_install -U virtualenv 

Создайте виртуальную среду. Поскольку документация говорит: virtualenv is a tool to create isolated Python environments. Это означает, что шансы на получение конфликта действительно малы. Здесь "myenv" - это имя папки, в которой вы можете получить доступ к своей среде, поэтому создайте ее там, где хотите.

virtualenv --distribute myenv

Затем перейдите в каталог "myenv" и запустите его, чтобы активировать его:

source myenv/bin/activate

Вам нужно установить libmysqlclient-dev для работы MySQL-python:

sudo apt-get install libmysqlclient-dev

Теперь вы готовы установить MySQL-python:

pip install MySQL-python

и все должно работать.

Если вы больше не хотите работать в этой среде, напишите в терминале:

deactivate

UPDATE

Поскольку этот ответ продолжает расти, позвольте мне показать вам, как сделать то же самое с помощью conda, которая стала моей любимой средой в наши дни. Сначала вам нужно установить anaconda (я считаю, вы также можете установить miniconda, которая является более легкой версией, которая включает в себя conda и некоторые пакеты.) Здесь вы найдите установщика для Linux, OS X и Windows. Это большой файл, но содержит много готовых пакетов, готовых к установке. Предполагая, что вы уже установили anaconda, вы можете просто запустить:

conda create -n mysql-env python

mysql-env - это имя среды (вы можете называть ее так, как хотите), а python - это стандартная версия устанавливаемого python (в настоящее время, 2.7.10). Кроме того, установите другую версию python с помощью conda create -n my-new-env python=3.4.

Затем вы активируете свою среду:

source activate mysql-env

и, наконец, установить mysql-python:

conda install MySQL-python

(я думаю, conda install MySQL-python также работает)

И все.

Ответ 2

easy_install -U distribute решил мою проблему

Ответ 3

В некоторых установках Ubuntu вы также захотите рассмотреть libmysqlclient-dev:

sudo apt-get install python-dev libmysqlclient-dev

Это также удерживало меня. Другие респонденты, вероятно, уже установили его и не понимали, что это необходимо.