2016-08-12 85 views
0

這將是我人生中第二次發佈幾乎完全相同的東西。這次和上次的區別大概是9個月,很多困難的學習,以及過去9個月裏我從來沒有遇到過這個問題,並且在整個時間段內都經常使用MySQLdb。我認識到,對此的類似問題已多次提出。我已閱讀回覆並執行建議的修復。到目前爲止,我仍然無法得出一個成功的結論,這就是我發佈我的問題的原因。錯誤配置:加載MySQLdb模塊時出錯:沒有名爲MySQLdb的模塊 - Django 1.4和Google App Engine

只是爲了描述我的環境:我使用Google App Engine啓動器在本地運行Google App Engine上的Django應用程序。我正在使用Mac OS X El Capitan。

當這些應用程序部署在Google App Engine上時,它們按預期工作完美無瑕。但是,在本地運行時,我會在嘗試運行應用程序時始終得到ImportError。

讓我列舉一些我已經檢查的事情和/或試圖解決這個問題:

-Installed MySQL的

-Installed的mysql-python的

- 增加MySQLdb的以 「圖書館」 app.yaml中的部分

- 在運行時檢查PYTHONPATH以確認將正確的目錄添加到路徑。進口的假支票之前

- 添加路徑

- 更新谷歌的App Engine SDK

我更是做了,但還能勉強現在回憶起來他們。當在運行時檢查的路徑,我可以清楚地看到到MySQLdb的所在google_appengine SDK目錄路徑如下:

/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/MySQLdb-1.2.5 

這是不是我應該看?我應該指向其他的東西嗎?我還指出了我安裝了其他python軟件包的其他目錄(例如/Library/Python/2.7/site-packages/)。我錯過了什麼?我知道我在做一些愚蠢的事情,對此我很好。我只是想停止浪費我自己的時間來解決這樣一個愚蠢的問題。我每天都在其他項目中使用MySQL,並且從未遇到類似這樣的問題。我真的不知道這是什麼。

讓我知道如果我可以添加更多有用的信息,我會很樂意。我會把我的一些文件放在下面,希望它們可能有用。

app.yaml中:

application: *omitted* 
version: 1 
runtime: python27 
api_version: 1 
threadsafe: true 

env_variables: 
    DJANGO_SETTINGS_MODULE: 'Freya.settings' 

handlers: 
- url: /favicon\.ico 
    static_files: static/images/favicon.ico 
    upload: static/images/favicon\.ico 
- url: /static 
    static_dir: static 
    application_readable: true 
- url: /.* 
    script: main.app 

libraries: 
- name: django 
    version: "latest" 
- name: MySQLdb 
    version: "latest" 

main.py:

from google.appengine.ext.webapp import util 
import django.dispatch.dispatcher 
import django.core.handlers.wsgi 
from django.conf import settings 
import django.core.signals 
import django.db 
import os 


settings._target = None 

app = django.core.handlers.wsgi.WSGIHandler() 


def main(): 
    util.run_wsgi_app(app) 


if __name__ == '__main__': 
    main() 

settings.py(數據庫位):

'default': { 
    'ENGINE': 'django.db.backends.mysql', 
    'HOST': '*omitted*', 
    'NAME': '*omitted*', 
    'USER': '*omitted*', 
} 

任何幫助不勝感激。

這是我在設置中嘗試的一個示例。py:

import imp 
import sys 
import os 


print('Checking') 

try: 
    imp.find_module('MySQLdb') 
    found = True 
except ImportError: 
    found = False 

print('Found: ' + str(found)) 

import MySQLdb 

print('Import success') 

這樣做,當我找'找到:假'我找不到它。我發現'找到:真的'這應該告訴我,找到MySQLdb模塊沒有任何問題。但是,當它到達import MySQLdb行時,程序崩潰ImportError: No module named MySQLdb和行print('Import success')永遠不會到達

發生了什麼事?

編輯:我要現在做這在我的Linux分區,但我不認爲我所做會有幫我找出什麼做回在Mac OS

回答

0

周圍挖掘後幾個小時我終於發現了根本問題。從MySQLdb正常工作以及MySQLdb停止正常工作的時間開始,唯一重要的變化是我將OS X升級到El Capitan。

運行:

otool -L /Library/Python/2.7/site-packages/_mysql.so

透露,_mysql.so是在/usr/lib目錄搜索libmysqlclient.18.dylib時真的它位於/usr/local/lib目錄。作爲一個快速解決,我創建了一個符號鏈接運行以下(全部在一行BTW):

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.d‌​ylib /usr/local/lib/libmysqlclient.18.dylib

由於埃爾卡皮坦實施了蘋果的「無根」模式,以及當前用戶(我)無法寫入/usr/lib,在/usr/local/lib中創建符號鏈接已足夠,可能對Mac用戶更好。

執行完這些步驟後,MySQLdb能夠正常加載;很久以前,我的應用程序首次初始化併成功運行。

相關問題