【问题标题】:How to use MySQLdb with Python and Django in OSX 10.6?如何在 OSX 10.6 中将 MySQLdb 与 Python 和 Django 一起使用?
【发布时间】:2011-02-26 11:42:42
【问题描述】:

对于 OSX 10.6 用户来说,这是一个备受讨论的问题,但我一直无法找到可行的解决方案。这是我的设置:

Python 2.6.1 64 位 Django 1.2.1 MySQL 5.1.47 osx10.6 64bit

我用 --no-site-packages 创建了一个 virtualenvwrapper,然后安装了 Django。当我激活 virtualenv 并运行 python manage.py syncdb 时,我得到了这个错误:

Traceback (most recent call last):
File "manage.py", line 11, in <module>
  execute_manager(settings)
File "/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site-packages/django/core/management/__init__.py", line 438, in execute_manager
  utility.execute()
File "/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site-packages/django/core/management/__init__.py", line 379, in execute
  self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site-packages/django/core/management/__init__.py", line 257, in fetch_command
  klass = load_command_class(app_name, subcommand)
File "/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site-packages/django/core/management/__init__.py", line 67, in load_command_class
  module = import_module('%s.management.commands.%s' % (app_name, name))
File "/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site-packages/django/utils/importlib.py", line 35, in import_module
  __import__(name)
File "/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site-packages/django/core/management/commands/syncdb.py", line 7, in <module>
from django.core.management.sql import custom_sql_for_model, emit_post_sync_signal
File "/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site-packages/django/core/management/sql.py", line 5, in <module>
from django.contrib.contenttypes import generic
File "/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site-packages/django/contrib/contenttypes/generic.py", line 6, in <module>
  from django.db import connection
File "/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site-packages/django/db/__init__.py", line 75, in <module>
  connection = connections[DEFAULT_DB_ALIAS]
File "/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site-packages/django/db/utils.py", line 91, in __getitem__
  backend = load_backend(db['ENGINE'])
File "/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site-packages/django/db/utils.py", line 32, in load_backend
  return import_module('.base', backend_name)
File "/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site-packages/django/utils/importlib.py", line 35, in import_module
  __import__(name)
File "/Users/joerobinson/.virtualenvs/dj_tut/lib/python2.6/site-packages/django/db/backends/mysql/base.py", line 14, in <module>
  raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb

我还安装了MySQL for Python 适配器,但无济于事(也许我安装不正确?)。

以前有人处理过这个吗?

【问题讨论】:

  • 此问题是由于 MySQL for Python 适配器安装不完整/不正确造成的。具体来说,我必须编辑 mysql_config 文件的路径以指向 /usr/local/mysql/bin/mysql_config - 在本文中有更详细的讨论:dakrauth.com/blog/entry/…
  • 就这样做----------apt-get install python-mysqldb
  • pip install mysql 为我工作!

标签: python mysql django virtualenv virtualenvwrapper


【解决方案1】:

我遇到了同样的错误,pip install MySQL-python 为我解决了。

备用安装:

  • 如果你没有 pip,easy_install MySQL-python 应该可以工作。
  • 如果您的 python 由打包系统管理,您可能必须使用 该系统(例如sudo apt-get install ...

下面,Soli 指出,如果您收到以下错误:

EnvironmentError: mysql_config not found

...那么您还有另一个系统依赖性问题。解决这个问题会因系统而异,但对于 Debian 派生系统:

sudo apt-get install python-mysqldb

【讨论】:

  • 是的,我使用 Synaptic 包管理器搜索 mysql-python 并安装它,效果很好。谢谢。
  • 在 Fedora 17 下:sudo yum install MySQL-python :)
  • $ mysql_config 当前未安装程序“mysql_config”。您可以通过键入安装它:sudo apt-get install libmysqlclient-dev
  • 应该将此答案添加到django官方文档中
  • 我认为我是唯一一个在运行 'pip install MySQL-python' 后出现此错误 'Command python setup.py egg_info failed with error code 1' 的人
【解决方案2】:

运行 Ubuntu,我必须这样做:

sudo apt-get install python-mysqldb

【讨论】:

  • 他运行的是 OS X,而不是 Ubuntu
  • 也不会把它放在 virtualenv 中
【解决方案3】:

补充其他答案,以下帮助我完成了mysql-python的安装:

virtualenv, mysql-python, pip: anyone know how?

在 Ubuntu 上...

apt-get install libmysqlclient-dev
apt-get install python-dev
pip install mysql-python

如果您没有适当的权限,请不要忘记在命令的开头添加“sudo”。

【讨论】:

  • 关键是apt-get install python-dev。不知道为什么我要在 2 年后安装 python 的开发版本,但是从今天开始使用 python 2.7.3 就可以了。只浪费了 3 个小时。
【解决方案4】:

试试下面的命令。他们为我工作:

brew install mysql-connector-c 
pip install MySQL-python

【讨论】:

  • 这个方法解决了我的问题。之前的所有其他建议给我一个错误消息Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/r8/c_tscq492sn641w5vtvqcvkw0000gp/T/pip-build-JYY1du/MySQL-python
  • 非常感谢,请尝试上述所有方法。没有人在 OSX 10.11 上工作过这个
  • @LearnAWK 它不起作用。我仍然收到错误 Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/3m/97mbsh5x2bnghhk55130bh_h0000gn/T/pip-build-FFU1vL/MySQL-python/
【解决方案5】:

mysql_config 必须在路径上。在 Mac 上,做

export PATH=$PATH:/usr/local/mysql/bin/
pip install MySQL-python

【讨论】:

  • 我已经尝试过了,仍然得到同样的错误:'raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e) django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No名为 MySQLdb' 的模块
【解决方案6】:
pip install mysql-python

引发错误:

EnvironmentError: mysql_config not found

sudo apt-get install python-mysqldb

解决了问题。

【讨论】:

    【解决方案7】:

    我是如何工作的:

    virtualenv -p python3.5 env/test
    

    采购我的环境后:

    pip install pymysql
    pip install django
    

    然后,我运行 startproject 并在 manage.py 中添加了这个:

    + try:
    +     import pymysql
    +     pymysql.install_as_MySQLdb()
    + except:
    +     pass
    

    另外,更新了这个内部设置:

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'foobar_db',
            'USER': 'foobaruser',
            'PASSWORD': 'foobarpwd',
        }
    }
    

    我的 virtualenv 中也安装了configparser==3.5.0,不确定是否需要...

    希望对你有帮助,

    【讨论】:

      【解决方案8】:

      以下内容非常适合我,运行 Ubuntu 13.10 64 位:

      sudo apt-get install libmysqlclient-dev
      sudo apt-get install python-dev
      

      现在,导航到您的 virtualenv(例如 env 文件夹)并执行以下命令:

      sudo ./bin/pip install mysql-python
      

      我实际上在一个单独的问题中找到了solution,我在下面引用它:

      如果您使用 --no-site-packages 开关创建了 virtualenv (默认),然后是系统范围内安装的附加项,例如 MySQLdb 不包含在虚拟环境包中。

      您需要使用安装的 pip 命令安装 MySQLdb 虚拟环境。使用 bin/activate 激活 virtualenv 脚本,或使用 virtualenv 中的 bin/pip 来安装 本地的 MySQLdb 库也是如此。

      或者,使用系统站点包创建一个新的 virtualenv 使用 --system-site-package 开关包含在内。

      我认为这也应该适用于 OSX。唯一的问题是获得用于安装 libmysqlclient-devpython-dev 的等效命令,因为它们需要编译 mysql-python 我猜。

      希望这会有所帮助。

      【讨论】:

      • 谢谢!您需要使用与 virtualenv 一起安装的 pip 命令安装 MySQLdb。 - 帮助
      • 谢谢。 sudo ./bin/pip install mysql-python 很有帮助!
      【解决方案9】:

      试试这个:这解决了我的问题。

      pip 安装 MySQL-python

      【讨论】:

      • 谢谢。这可以解决我在 django 1.7.1 上使用 heroku 和 cleardb:ignite 的问题。
      【解决方案10】:

      此问题是由于 MySQL for Python 适配器安装不完整/不正确造成的。具体来说,我必须编辑 mysql_config 文件的路径以指向 /usr/local/mysql/bin/mysql_config - 在本文中更详细地讨论:http://dakrauth.com/blog/entry/python-and-django-setup-mac-os-x-leopard/

      【讨论】:

        【解决方案11】:

        sudo apt-get install python-mysqldb 在 ubuntu 中完美运行

        pip install mysql-python 引发环境错误

        【讨论】:

          【解决方案12】:

          这适用于 Red Hat Enterprise Linux Server 6.4 版

          sudo yum install mysql-devel
          sudo yum install python-devel
          pip install mysql-python
          

          【讨论】:

          • CentOS 7,选项 1:yum install MySQL-python;选项 2(如果使用 virtualenv):yum install mysql-devel; venv/bin/pip install MySQL-python.
          【解决方案13】:

          您可以安装为pip install mysqlclient

          【讨论】:

          • 这是为我排序的,因为我相信这是用于 Python 3 的版本
          【解决方案14】:

          我升级到 OSX Mavericks 和 Pycharm 3 并开始收到此错误,我使用 pip 并轻松安装并收到错误:

          command'/usr/bin/clang' 失败,退出状态为 1。

          所以我需要更新到 Xcode 5 并再次尝试使用 pip 安装。

          pip install mysql-python
          

          解决所有问题。

          【讨论】:

            【解决方案15】:

            这里出现的错误是在导入 python 模块。这可以通过将 python site-packages 文件夹添加到 OS X 上的环境变量 $PYTHONPATH 来解决。因此我们可以将以下命令添加到 .bash_profile 文件中:

            export PYTHONPATH="$PYTHONPATH:/usr/local/lib/pythonx.x/site-packages/"
            

            *将 x.x 替换为您正在使用的 python 版本

            【讨论】:

            【解决方案16】:

            如果你使用的是 python3,那么试试这个(我的操作系统是 Ubuntu 16.04):

            sudo apt-get install python3-mysqldb
            

            【讨论】:

              【解决方案17】:

              pip 在 Windows 8 64 位系统上对我不起作用。 easy_install mysql-python 为我工作。 如果 pip 不起作用,您可以使用 easy_install 避免在 Windows 上构建二进制文件。

              【讨论】:

                【解决方案18】:

                我在 OSX 10.6.6 上遇到了同样的问题。但只是在终端上一个简单的easy_install mysql-python 并没有解决它,因为随后出现了另一个问题:

                error: command 'gcc-4.2' failed with exit status 1

                显然,从 XCode3(OSX 10.6 自带)升级到 XCode4 后会出现此问题。这个较新的版本删除了对构建 ppc 拱门的支持。如果是同样的情况,在easy_install mysql-python之前尝试如下操作

                sudo bash
                export ARCHFLAGS='-arch i386 -arch x86_64'
                rm -r build
                python setup.py build
                python setup.py install
                

                非常感谢 Ned Deily 提供的解决方案。 Check here

                【讨论】:

                  【解决方案19】:

                  对我来说,只需重新安装 mysql-python 即可解决问题

                  pip uninstall mysql-python
                  pip install mysql-python
                  

                  【讨论】:

                    【解决方案20】:

                    为我安装命令行工具:

                    xcode-select --install
                    

                    【讨论】:

                      【解决方案21】:

                      我通过使用 pip 安装 MySQL-python 库解决了同样的问题。当我第一次在 settings.py 中更改数据库设置并执行 makemigrations 命令时,您可以看到控制台上显示的消息(解决方案遵循以下消息,请看)。

                        (vir_env) admins-MacBook-Pro-3:src admin$ python manage.py makemigrations
                      Traceback (most recent call last):
                        File "manage.py", line 10, in <module>
                          execute_from_command_line(sys.argv)
                        File "/Users/admin/Desktop/SetUp1/vir_env/lib/python2.7/site-packages/django/core/management/__init__.py", line 338, in execute_from_command_line
                          utility.execute()
                        File "/Users/admin/Desktop/SetUp1/vir_env/lib/python2.7/site-packages/django/core/management/__init__.py", line 312, in execute
                          django.setup()
                        File "/Users/admin/Desktop/SetUp1/vir_env/lib/python2.7/site-packages/django/__init__.py", line 18, in setup
                          apps.populate(settings.INSTALLED_APPS)
                        File "/Users/admin/Desktop/SetUp1/vir_env/lib/python2.7/site-packages/django/apps/registry.py", line 108, in populate
                          app_config.import_models(all_models)
                        File "/Users/admin/Desktop/SetUp1/vir_env/lib/python2.7/site-packages/django/apps/config.py", line 198, in import_models
                          self.models_module = import_module(models_module_name)
                        File "/usr/local/Cellar/python/2.7.12_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
                          __import__(name)
                        File "/Users/admin/Desktop/SetUp1/vir_env/lib/python2.7/site-packages/django/contrib/auth/models.py", line 41, in <module>
                          class Permission(models.Model):
                        File "/Users/admin/Desktop/SetUp1/vir_env/lib/python2.7/site-packages/django/db/models/base.py", line 139, in __new__
                          new_class.add_to_class('_meta', Options(meta, **kwargs))
                        File "/Users/admin/Desktop/SetUp1/vir_env/lib/python2.7/site-packages/django/db/models/base.py", line 324, in add_to_class
                          value.contribute_to_class(cls, name)
                        File "/Users/admin/Desktop/SetUp1/vir_env/lib/python2.7/site-packages/django/db/models/options.py", line 250, in contribute_to_class
                          self.db_table = truncate_name(self.db_table, connection.ops.max_name_length())
                        File "/Users/admin/Desktop/SetUp1/vir_env/lib/python2.7/site-packages/django/db/__init__.py", line 36, in __getattr__
                          return getattr(connections[DEFAULT_DB_ALIAS], item)
                        File "/Users/admin/Desktop/SetUp1/vir_env/lib/python2.7/site-packages/django/db/utils.py", line 240, in __getitem__
                          backend = load_backend(db['ENGINE'])
                        File "/Users/admin/Desktop/SetUp1/vir_env/lib/python2.7/site-packages/django/db/utils.py", line 111, in load_backend
                          return import_module('%s.base' % backend_name)
                        File "/usr/local/Cellar/python/2.7.12_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
                          __import__(name)
                        File "/Users/admin/Desktop/SetUp1/vir_env/lib/python2.7/site-packages/django/db/backends/mysql/base.py", line 27, in <module>
                          raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
                      django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb
                      

                      最后我通过如下方式克服了这个问题:

                      (vir_env) admins-MacBook-Pro-3:src admin$ pip install MySQLdb
                      Collecting MySQLdb
                        Could not find a version that satisfies the requirement MySQLdb (from versions: )
                      No matching distribution found for MySQLdb
                      (vir_env) admins-MacBook-Pro-3:src admin$ pip install MySQL-python
                      Collecting MySQL-python
                        Downloading MySQL-python-1.2.5.zip (108kB)
                          100% |████████████████████████████████| 112kB 364kB/s 
                      Building wheels for collected packages: MySQL-python
                        Running setup.py bdist_wheel for MySQL-python ... done
                        Stored in directory: /Users/admin/Library/Caches/pip/wheels/38/a3/89/ec87e092cfb38450fc91a62562055231deb0049a029054dc62
                      Successfully built MySQL-python
                      Installing collected packages: MySQL-python
                      Successfully installed MySQL-python-1.2.5
                      (vir_env) admins-MacBook-Pro-3:src admin$ python manage.py makemigrations
                      No changes detected
                      (vir_env) admins-MacBook-Pro-3:src admin$ python manage.py migrate
                      Operations to perform:
                        Synchronize unmigrated apps: staticfiles, rest_framework, messages, crispy_forms
                        Apply all migrations: admin, contenttypes, sessions, auth, PyApp
                      Synchronizing apps without migrations:
                        Creating tables...
                          Running deferred SQL...
                        Installing custom SQL...
                      Running migrations:
                        Rendering model states... DONE
                        Applying PyApp.0001_initial... OK
                        Applying PyApp.0002_auto_20170310_0936... OK
                        Applying PyApp.0003_auto_20170310_0953... OK
                        Applying PyApp.0004_auto_20170310_0954... OK
                        Applying PyApp.0005_auto_20170311_0619... OK
                        Applying PyApp.0006_auto_20170311_0622... OK
                        Applying PyApp.0007_loraevksensor... OK
                        Applying PyApp.0008_auto_20170315_0752... OK
                        Applying PyApp.0009_auto_20170315_0753... OK
                        Applying PyApp.0010_auto_20170315_0806... OK
                        Applying PyApp.0011_auto_20170315_0814... OK
                        Applying PyApp.0012_auto_20170315_0820... OK
                        Applying PyApp.0013_auto_20170315_0822... OK
                        Applying PyApp.0014_auto_20170315_0907... OK
                        Applying PyApp.0015_auto_20170315_1041... OK
                        Applying PyApp.0016_auto_20170315_1355... OK
                        Applying PyApp.0017_auto_20170315_1401... OK
                        Applying PyApp.0018_auto_20170331_1348... OK
                        Applying PyApp.0019_auto_20170331_1349... OK
                        Applying PyApp.0020_auto_20170331_1350... OK
                        Applying PyApp.0021_auto_20170331_1458... OK
                        Applying PyApp.0022_delete_postoffice... OK
                        Applying PyApp.0023_posoffice... OK
                        Applying PyApp.0024_auto_20170331_1504... OK
                        Applying PyApp.0025_auto_20170331_1511... OK
                        Applying contenttypes.0001_initial... OK
                        Applying auth.0001_initial... OK
                        Applying admin.0001_initial... OK
                        Applying contenttypes.0002_remove_content_type_name... OK
                        Applying auth.0002_alter_permission_name_max_length... OK
                        Applying auth.0003_alter_user_email_max_length... OK
                        Applying auth.0004_alter_user_username_opts... OK
                        Applying auth.0005_alter_user_last_login_null... OK
                        Applying auth.0006_require_contenttypes_0002... OK
                        Applying sessions.0001_initial... OK
                      (vir_env) admins-MacBook-Pro-3:src admin$ 
                      

                      【讨论】:

                        【解决方案22】:

                        运行此命令

                        sudo pip install mysql-python;
                        

                        现在您可以运行命令了。

                        python manage.py startapp filename;
                        

                        【讨论】:

                          【解决方案23】:

                          我遇到过类似的情况,我在 mac osx 上的 virtualenv 中使用 python3.7 和 django 2.1。 尝试运行命令:

                          pip install mysql-python
                          pip install pymysql
                          

                          并在您的项目文件夹中编辑__init__.py 文件并添加以下内容:

                          import pymysql
                          
                          pymysql.install_as_MySQLdb()
                          

                          然后运行:python3 manage.py runserverpython manage.py runserver

                          【讨论】:

                            猜你喜欢
                            • 1970-01-01
                            • 1970-01-01
                            • 2011-07-01
                            • 1970-01-01
                            • 2011-08-23
                            • 2012-03-26
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            相关资源
                            最近更新 更多