Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python mysqldb生成错误_Python_Django_Macos_Osx Snow Leopard - Fatal编程技术网

Python mysqldb生成错误

Python mysqldb生成错误,python,django,macos,osx-snow-leopard,Python,Django,Macos,Osx Snow Leopard,我记得用Leopard 10.5.7在我的32位Mac上安装了Python+Django+MySQL+MySQLdb。 我用Mac Snow Leopard试过同样的方法。但不幸的是,我遇到了很多错误。。。 我不知道,但奇怪的事情正在发生。请查看错误日志: Amit-Vermas-MacBook:mysql-python-1.2.2 amitverma$ python setup.py build running build running build_py copying MySQLdb/re

我记得用Leopard 10.5.7在我的32位Mac上安装了Python+Django+MySQL+MySQLdb。 我用Mac Snow Leopard试过同样的方法。但不幸的是,我遇到了很多错误。。。 我不知道,但奇怪的事情正在发生。请查看错误日志:

Amit-Vermas-MacBook:mysql-python-1.2.2 amitverma$ python setup.py build
running build
running build_py
copying MySQLdb/release.py -> build/lib.macosx-10.3-i386-2.5/MySQLdb
running build_ext
building '_mysql' extension
creating build/temp.macosx-10.3-i386-2.5
gcc-4.0 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -fno-strict-aliasing -Wno-long-double -no-cpp-precomp -mno-fused-madd -fno-common -dynamic -DNDEBUG -g -O3 -Dversion_info=(1,2,2,'final',0) -D__version__=1.2.2 -I/usr/local/mysql/include -I/Library/Frameworks/Python.framework/Versions/2.5/include/python2.5 -c _mysql.c -o build/temp.macosx-10.3-i386-2.5/_mysql.o -g -Os -arch x86_64 -fno-common -D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DIGNORE_SIGHUP_SIGQUIT -DDONT_DECLARE_CXA_PURE_VIRTUAL
In file included from /Library/Frameworks/Python.framework/Versions/2.5/include/python2.5/Python.h:57,
                 from pymemcompat.h:10,
                 from _mysql.c:29:
/Library/Frameworks/Python.framework/Versions/2.5/include/python2.5/pyport.h:761:2: error: #error "LONG_BIT definition appears wrong for platform (bad gcc/glibc config?)."
In file included from _mysql.c:35:
/usr/local/mysql/include/my_config.h:1050:1: warning: "HAVE_WCSCOLL" redefined
In file included from /Library/Frameworks/Python.framework/Versions/2.5/include/python2.5/Python.h:8,
                 from pymemcompat.h:10,
                 from _mysql.c:29:
/Library/Frameworks/Python.framework/Versions/2.5/include/python2.5/pyconfig.h:721:1: warning: this is the location of the previous definition
In file included from _mysql.c:35:
/usr/local/mysql/include/my_config.h:1168:1: warning: "SIZEOF_LONG" redefined
In file included from /Library/Frameworks/Python.framework/Versions/2.5/include/python2.5/Python.h:8,
                 from pymemcompat.h:10,
                 from _mysql.c:29:
/Library/Frameworks/Python.framework/Versions/2.5/include/python2.5/pyconfig.h:811:1: warning: this is the location of the previous definition
In file included from _mysql.c:35:
/usr/local/mysql/include/my_config.h:1177:1: warning: "SIZEOF_PTHREAD_T" redefined
In file included from /Library/Frameworks/Python.framework/Versions/2.5/include/python2.5/Python.h:8,
                 from pymemcompat.h:10,
                 from _mysql.c:29:
/Library/Frameworks/Python.framework/Versions/2.5/include/python2.5/pyconfig.h:820:1: warning: this is the location of the previous definition
error: command 'gcc-4.0' failed with exit status 1
Amit-Vermas-MacBook:mysql-python-1.2.2 amitverma$ 

下面的博文帮助我在Mac上编译了MySQLDB1.2.2:

然而,后来我尝试了MySQLDB1.2.3c1,在开箱即用的编译中没有任何问题。1.2.2已经有好几年的历史了,在Python2.6上会出现弃用警告。我只想切换到1.2.3.c1,看看这对你是否有效


1.2.3c1是PyPi的最新版本。

这是我个人的makefile规则

MYSQLDB_VERSION=1.2.3c1
MYSQLDB_TARGET=$(BUILD_FLAGS_DIR)/mysqldb
MYSQLDB_PACKAGE=MySQL-python-$(MYSQLDB_VERSION).tar.gz
MYSQLDB_PACKAGE_URL=http://downloads.sourceforge.net/project/mysql-python/mysql-python-test/$(MYSQLDB_VERSION)/$(MYSQLDB_PACKAGE)

.PHONY: mysqldb mysqldb-download
mysqldb: $(MYSQLDB_TARGET)
mysqldb-download: $(DOWNLOAD_DIR)/$(MYSQLDB_PACKAGE)

$(MYSQLDB_TARGET): $(INIT_TARGET) $(MYSQLDB_DEPS) $(DOWNLOAD_DIR)/$(MYSQLDB_PACKAGE)
    -rm -rf $(UNPACK_DIR)/MySQL-python-$(MYSQLDB_VERSION)
    tar -m -C $(UNPACK_DIR) -xzvf $(DOWNLOAD_DIR)/$(MYSQLDB_PACKAGE)
    -cd $(UNPACK_DIR)/MySQL-python-$(MYSQLDB_VERSION); \
    for patch in $(PATCH_DIR)/mysqldb-$(MYSQLDB_VERSION)_$(ARCH)_*; \
        do patch -p1 < $$patch; \
    done
    cd $(UNPACK_DIR)/MySQL-python-$(MYSQLDB_VERSION); export CC="gcc -m64" FC="g95 -m64" CPPFLAGS="-I$(RUNTIME_DIR)/include" CFLAGS="-m64 -I$(RUNTIME_DIR)/include" LD_LIBRARY_PATH=$(RUNTIME_DIR)/lib64:$(RUNTIME_DIR)/lib:$$LD_LIBRARY_PATH PATH=$(RUNTIME_DIR)/bin:$$PATH PYTHONPATH=$(RUNTIME_DIR)/lib/python2.5/site-packages/; $(RUNTIME_DIR)/bin/python2.5 setup.py install --prefix=$(RUNTIME_DIR)
    touch $(MYSQLDB_TARGET)

$(DOWNLOAD_DIR)/$(MYSQLDB_PACKAGE):
    for package in $(MYSQLDB_PACKAGE_URL); \
    do \
        echo -n "Downloading $$package... ";  \
        cd $(DOWNLOAD_DIR); curl -L -O $$package; \
        echo "done"; \
    done
    touch $@

ALL_RUNTIME_TARGETS+=$(MYSQLDB_TARGET)
ALL_DOWNLOAD_TARGETS+=$(DOWNLOAD_DIR)/$(MYSQLDB_PACKAGE)
这对我很有用。我不能保证,但是。。。也许你会在里面找到一些有趣的提示


请注意,我使用的是一个定制的编译器(因为过时的原因太难看了,无法深入研究)

最可能的解释是,您试图将64位版本的MySQL库与32位版本的Python链接起来(目前,所有Python.org OS X安装程序都是32位的)。(您可以在
/usr/local/mysql/
中的库文件上使用
file
命令来验证这一点)

一些解决方案:

  • 使用苹果提供的
    python2.6
    on 64位的雪豹

  • 安装32位版本的MySQL库

  • 使用
    MacPorts
    :安装完整的解决方案,然后安装(或),该解决方案还将安装所有必要的依赖项,包括新的 python和MySQL客户端库都应该正确地协同工作(并且 可以通过
    MacPorts
    )进行更新:

    sudo端口安装py26-mysql#或py25-mysql

对于在
osx
上与python一起使用
MySQL
,我推荐最后一种解决方案,也就是说,除非您真正喜欢并且有时间进行包管理和安装。从长远来看,这可能会为你节省很多麻烦

p.S.MacPorts还包括
django
PIL
的端口:

sudo port install py26-django py26-pil
编辑:

要走
MacPorts
路线,请按照我给出的说明删除python.org安装程序python的效果。不要试图删除或修改
/usr/bin
/System/Library
中Apple安装的Python文件;它们是OS X的一部分。然后按照上面引用的说明安装
MacPorts
。为了避免干扰Apple或第三方安装,
MacPorts
将其所有文件安装到根目录为
/opt/local
的完全独立的目录结构中。因此,您需要修改
.bash_配置文件
,将
/opt/local/bin
添加到
$PATH
中。如果希望首先找到
MacPorts
版本,请添加如下内容:

export PATH="/opt/local/bin:${PATH}"
启动新的终端会话时,您应该在
python2.6
找到
MacPorts
python2.6。如果还要使命令
python
指向此处:

$ sudo port install python_select
$ sudo python_select -l
Available versions:
current none python26 python26-apple
$ sudo python_select python26

看起来您需要重新安装/更新XCode(构建工具)

Ask on Serverfault,这是SO的姐妹站点:否。这是一个编程问题。程序员比系统管理员更可能知道这些问题。它不起作用。然后我切换到64位。在这个过程中,我从Python2.5.4切换到了2.6.4,以及中间的一切:)这真的让我和我的mac感到困惑。但我想你说的有道理。现在我想做清洁重新安装。有没有办法删除系统上安装的所有python版本,然后重新安装?嘿,stefano。恐怕我对此一无所知。我正处于一个相当初级的阶段,上面的话只是吓唬着我。我在以前的10.5.7 Mac上成功地做到了这一点。现在我有了10.6只雪豹,生活变成了地狱。我认为这与64位的东西有关。
$ sudo port install python_select
$ sudo python_select -l
Available versions:
current none python26 python26-apple
$ sudo python_select python26