强迫Django使用32位Python

2024-03-28 14:12:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我终于解决了普遍存在的MySQL python/OSX(10.7 64位)崩溃问题,并使用32位MySQL并使用“arch-i386”调用python,使python和MySQL正常工作。Django之外的Py脚本可以正确地查询MySQL等。但是,当我尝试启动Django并调用开发服务器时,我得到了以前在使用64位Python时遇到的错误:

django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: dlopen(/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/_mysql.so, 2): no suitable image found.  Did find:
    /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/_mysql.so: mach-o, but wrong architecture

在我的.bash_档案里

alias python='arch -i386 python2.7'

export VERSIONER_PYTHON_PREFER_64_BIT=no

export VERSIONER_PYTHON_PREFER_32_BIT=yes

因此,我不明白Django是如何调用python的,以及它为什么不尊重我在.bash_配置文件中的内容。为了让Django调用32位Python,我需要在Django中做什么更改?我做python时的完整回溯管理.pyrunserver'是:

^{pr2}$

Tags: djangonobashsolibpackageslibrarymysql
2条回答

VERSIONER_PYTHON_PREFER_32_BIT环境变量是Apple提供的功能。它只适用于苹果提供的macosx10.6和10.7系统Pythons。从显示的路径来看,您使用的是非系统Python(安装在/Library/Frameworks中,可能来自python.org网站安装程序)。VERSIONER_PYTHON_PREFER_32_BIT对它没有影响。您是否尝试过使用类似以下内容启动开发服务器:

arch -i386 /usr/local/bin/python2.7 django-admin.py ...

如果Django在默认为64位的子进程中启动Python解释器,您仍然可能会遇到麻烦。您应该让所有东西都在64位模式下工作,或者坚持使用完整的32位Python和MySQLdb链。通过从第三方分销商(如MacPorts或Homebrew)安装完整的解决方案,您可以为自己省去很多麻烦。在

我有一个similar issue with Snow Leopard,但我所有的工作都使用虚拟环境。如果您也在使用一个(这是使用Django的推荐方法),那么您可以强制虚拟环境使用的python版本。当您创建一个新的虚拟环境时,只需说一些类似于:

virtualenv  python=/Library/Frameworks/Python.framework/Versions/2.7/bin/python new-environment

相关问题 更多 >