Amazon EC2上的Django syncdb问题

时间:2011-04-01 06:10:27

标签: python mysql django amazon-ec2 mysql-python

我正在尝试在我的EC2实例上部署我的项目。 当我运行python manage.py validate时,我收到此错误Error: No module named mysql.base

我已经使用yum install MySQL-python安装了MySQL-python。我可以从Python解释器成功导入MySQLdb。

我似乎无法弄清楚出了什么问题?

我正在使用Django 1.3和Python 2.6以及MySQLdb 1.2.3c1

更新 好的,我发现MySQL-python文件位于以下目录/usr/lib**64**/python2.6/site-packages/而不是/usr/lib/python2.6/site-packages/。所以现在我试图在我的wget http://sourceforge.net/projects/mysql-python/files/mysql-python/1.2.3/MySQL-python-1.2.3.tar.gz/download目录中通过/usr/lib/python2.6/site-packages/手动下载MySQL-python文件,现在我在运行python setup.py build

时收到此错误
running build
running build_py
creating build
creating build/lib.linux-x86_64-2.6
copying _mysql_exceptions.py -> build/lib.linux-x86_64-2.6
creating build/lib.linux-x86_64-2.6/MySQLdb
copying MySQLdb/__init__.py -> build/lib.linux-x86_64-2.6/MySQLdb
copying MySQLdb/converters.py -> build/lib.linux-x86_64-2.6/MySQLdb
copying MySQLdb/connections.py -> build/lib.linux-x86_64-2.6/MySQLdb
copying MySQLdb/cursors.py -> build/lib.linux-x86_64-2.6/MySQLdb
copying MySQLdb/release.py -> build/lib.linux-x86_64-2.6/MySQLdb
copying MySQLdb/times.py -> build/lib.linux-x86_64-2.6/MySQLdb
creating build/lib.linux-x86_64-2.6/MySQLdb/constants
copying MySQLdb/constants/__init__.py -> build/lib.linux-x86_64-2.6/MySQLdb/constants
copying MySQLdb/constants/CR.py -> build/lib.linux-x86_64-2.6/MySQLdb/constants
copying MySQLdb/constants/FIELD_TYPE.py -> build/lib.linux-x86_64-2.6/MySQLdb/constants
copying MySQLdb/constants/ER.py -> build/lib.linux-x86_64-2.6/MySQLdb/constants
copying MySQLdb/constants/FLAG.py -> build/lib.linux-x86_64-2.6/MySQLdb/constants
copying MySQLdb/constants/REFRESH.py -> build/lib.linux-x86_64-2.6/MySQLdb/constants
copying MySQLdb/constants/CLIENT.py -> build/lib.linux-x86_64-2.6/MySQLdb/constants
running build_ext
building '_mysql' extension
creating build/temp.linux-x86_64-2.6
gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -Dversion_info=(1,2,3,'final',0) -D__version__=1.2.3 -I/usr/include/mysql -I/usr/include/python2.6 -c _mysql.c -o build/temp.linux-x86_64-2.6/_mysql.o -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -fno-strict-aliasing -fwrapv -fPIC -DUNIV_LINUX
unable to execute gcc: No such file or directory
error: command 'gcc' failed with exit status 1

操作系统详细信息

Amazon Linux AMI Base 2011.02.1, EBS boot, 64-bit architecture with Amazon EC2 AMI Tools
The Amazon Linux AMI is based on RHEL 5.x and parts of RHEL6

更新 我在一个32位实例上重新完成了这个项目并且它有效。

3 个答案:

答案 0 :(得分:0)

尝试

pip install mysql-python

easy_install mysql-python

或下载软件包,然后使用python脚本setup.py

进行安装

编辑:

尝试在python shell上进行导入

from mysql.base import *

或只是启动

python manage.py shell

如果你能够这样做,可能是/home/djangotest/sgelections/apache/django.wsgi中出现了问题

一个极端的例子(笑):

import sys
sys.path = []

答案 1 :(得分:0)

您使用的操作系统是什么? 是否默认安装了python 2.6你自己安装了吗?

我问的原因是因为当你使用yum install时,它会为你的操作系统上安装的python版本安装mysql-python客户端,对于CentOS 5.5,它是python2.4.x.

如果你使用python的alt-install选项手动安装了python2.6,那么mysql-python最适合你机器上的默认python版本而不是python2.6。

如果你进入/usr/lib/python2.6/site-packages,你会看到MySQL_python吗?如果没有,那么你需要使用easy_install或pip再次安装它,或者自己下载mysql-python包然后手动安装它。或者您可以添加现在安装到python路径的位置。

如果您在计算机上搜索MySQL_python,您可以看到它现在的安装位置,这可以让您更好地了解正在发生的事情。

答案 2 :(得分:0)

打开您的settings.py文件。如果您将ENGINE变为mySQL,则应更改为:

DATABASES = {
  'default': {
    'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 
      'mysql', 'sqlite3' or 'oracle'.
  ...
     }