2015-11-15 119 views
1

我有一個非常奇怪的情況,我無法弄清楚什麼是錯的。在OS X上使用Django加載MySQLdb模塊時出錯

我正在一個Django項目和我:

在OS X

新增裝機容量的MySQL數據庫值:

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', 
     'OPTIONS': { 
      'read_default_file': '/path/to/my.cnf', 
     }, 
    } 
} 

但隨後的Django /夾層告訴我有一個錯誤加載MySQLdb模塊。

所以我用Google搜索了一些解決這個技巧和嘗試這些方法:

pip install mysql-python 
  • 重新安裝PIP
  • 下載ez_setup.py並安裝

現在我被困。同樣的錯誤顯示出來,感覺就像MySQL連接器/適配器有問題,無法加載。

接下來我應該嘗試什麼?

與回溯編輯:

/Library/Python/2.7/site-packages/django/db/utils.py:238: RemovedInDjango19Warning: In Django 1.9 the TEST_COLLATION connection setting will be moved to a COLLATION entry in the TEST setting 
    self.prepare_test_settings(alias) 

Unhandled exception in thread started by <function wrapper at 0x1064bc5f0> 
Traceback (most recent call last): 
    File "/Library/Python/2.7/site-packages/django/utils/autoreload.py", line 229, in wrapper 
    fn(*args, **kwargs) 
    File "/Library/Python/2.7/site-packages/mezzanine/core/management/commands/runserver.py", line 154, in inner_run 
    super(Command, self).inner_run(*args, **kwargs) 
    File "/Library/Python/2.7/site-packages/django/core/management/commands/runserver.py", line 107, in inner_run 
    autoreload.raise_last_exception() 
    File "/Library/Python/2.7/site-packages/django/utils/autoreload.py", line 252, in raise_last_exception 
    six.reraise(*_exception) 
    File "/Library/Python/2.7/site-packages/django/utils/autoreload.py", line 229, in wrapper 
    fn(*args, **kwargs) 
    File "/Library/Python/2.7/site-packages/django/__init__.py", line 18, in setup 
    apps.populate(settings.INSTALLED_APPS) 
    File "/Library/Python/2.7/site-packages/django/apps/registry.py", line 108, in populate 
    app_config.import_models(all_models) 
    File "/Library/Python/2.7/site-packages/django/apps/config.py", line 198, in import_models 
    self.models_module = import_module(models_module_name) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module 
    __import__(name) 
    File "/Library/Python/2.7/site-packages/django/contrib/auth/models.py", line 41, in <module> 
    class Permission(models.Model): 
    File "/Library/Python/2.7/site-packages/django/db/models/base.py", line 139, in __new__ 
    new_class.add_to_class('_meta', Options(meta, **kwargs)) 
    File "/Library/Python/2.7/site-packages/django/db/models/base.py", line 324, in add_to_class 
    value.contribute_to_class(cls, name) 
    File "/Library/Python/2.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 "/Library/Python/2.7/site-packages/django/db/__init__.py", line 36, in __getattr__ 
    return getattr(connections[DEFAULT_DB_ALIAS], item) 
    File "/Library/Python/2.7/site-packages/django/db/utils.py", line 240, in __getitem__ 
    backend = load_backend(db['ENGINE']) 
    File "/Library/Python/2.7/site-packages/django/db/utils.py", line 111, in load_backend 
    return import_module('%s.base' % backend_name) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module 
    __import__(name) 
    File "/Library/Python/2.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 
/Library/Python/2.7/site-packages/django/db/utils.py:238: RemovedInDjango19Warning: In Django 1.9 the TEST_COLLATION connection setting will be moved to a COLLATION entry in the TEST setting 
    self.prepare_test_settings(alias) 

Unhandled exception in thread started by <function wrapper at 0x10de74500> 
Traceback (most recent call last): 
    File "/Library/Python/2.7/site-packages/django/utils/autoreload.py", line 229, in wrapper 
    fn(*args, **kwargs) 
    File "/Library/Python/2.7/site-packages/mezzanine/core/management/commands/runserver.py", line 154, in inner_run 
    super(Command, self).inner_run(*args, **kwargs) 
    File "/Library/Python/2.7/site-packages/django/core/management/commands/runserver.py", line 107, in inner_run 
    autoreload.raise_last_exception() 
    File "/Library/Python/2.7/site-packages/django/utils/autoreload.py", line 252, in raise_last_exception 
    six.reraise(*_exception) 
    File "/Library/Python/2.7/site-packages/django/utils/autoreload.py", line 229, in wrapper 
    fn(*args, **kwargs) 
    File "/Library/Python/2.7/site-packages/django/__init__.py", line 18, in setup 
    apps.populate(settings.INSTALLED_APPS) 
    File "/Library/Python/2.7/site-packages/django/apps/registry.py", line 108, in populate 
    app_config.import_models(all_models) 
    File "/Library/Python/2.7/site-packages/django/apps/config.py", line 198, in import_models 
    self.models_module = import_module(models_module_name) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module 
    __import__(name) 
    File "/Library/Python/2.7/site-packages/django/contrib/auth/models.py", line 41, in <module> 
    class Permission(models.Model): 
    File "/Library/Python/2.7/site-packages/django/db/models/base.py", line 139, in __new__ 
    new_class.add_to_class('_meta', Options(meta, **kwargs)) 
    File "/Library/Python/2.7/site-packages/django/db/models/base.py", line 324, in add_to_class 
    value.contribute_to_class(cls, name) 
    File "/Library/Python/2.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 "/Library/Python/2.7/site-packages/django/db/__init__.py", line 36, in __getattr__ 
    return getattr(connections[DEFAULT_DB_ALIAS], item) 
    File "/Library/Python/2.7/site-packages/django/db/utils.py", line 240, in __getitem__ 
    backend = load_backend(db['ENGINE']) 
    File "/Library/Python/2.7/site-packages/django/db/utils.py", line 111, in load_backend 
    return import_module('%s.base' % backend_name) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module 
    __import__(name) 
    File "/Library/Python/2.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 

當運行PIP命令:

The directory '/Users/myusername/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag. 
You are using pip version 7.0.3, however version 7.1.2 is available. 
You should consider upgrading via the 'pip install --upgrade pip' command. 
The directory '/Users/myusername/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag. 
Collecting mysql-python 
    Downloading MySQL-python-1.2.5.zip (108kB) 
    100% |████████████████████████████████| 110kB 495kB/s 
    Complete output from command python setup.py egg_info: 
    sh: mysql_config: command not found 
    Traceback (most recent call last): 
     File "<string>", line 20, in <module> 
     File "/private/tmp/pip-build-LaB_Nv/mysql-python/setup.py", line 17, in <module> 
     metadata, options = get_config() 
     File "setup_posix.py", line 43, in get_config 
     libs = mysql_config("libs_r") 
     File "setup_posix.py", line 25, in mysql_config 
     raise EnvironmentError("%s not found" % (mysql_config.path,)) 
    EnvironmentError: mysql_config not found 

    ---------------------------------------- 
Command "python setup.py egg_info" failed with error code 1 in /private/tmp/pip-build-LaB_Nv/mysql-python 
+0

你能提供錯誤的完整追溯嗎? –

+0

究竟是什麼時候你運行pip命令?你是否和你的項目在同一個virtualenv中做到這一點? –

+0

@DanielRoseman:現在編輯輸出。 – lol5433

回答

2

的問題是一樣的,當你要安裝psycopg2包Postgres的。爲了解決這個問題,你必須添加到你的mysql bin目錄下的PATH

按照此步驟:
1.下載DMG歸檔並安裝MySQL社區服務器的最新正式版:mysql-5.7.9
2.添加MySQL bin目錄的路徑。要做到這一點,添加到您的~/.bash_profile文件這個

# add mysql bin directory 
PATH="/usr/local/mysql/bin/:${PATH}" 
export PATH 
  • 重新啓動計算機
  • 運行:pip install mysql-python
  • ,它應該輸出:Successfully installed mysql-python-1.2.5

    +0

    謝謝你太多了!這是一個很好的工作答案! – lol5433

    +1

    你的歡迎:)如果以後,你正在使用postgres,做同樣的事情。 –

    相關問題