我在Linux (Ubuntu9.10)下运行VMware融合下的数据库服务器,但在Mac端编写Django代码。安装mysql-python需要在Mac上安装MySQL,以便将_mysql.so编译成site-packages。
但是,在此之后,我不再使用Mac端的MySQL,而只是删除它。当然,当_mysql.so需要/usr/local/mysql/lib/libmysqlclient_r.16.dylib时,这是不可能的。
mysql的site.cfg中有一个“静态”选项,当设置为"true“时,它显著增加了_mysql.so文件的大小,但它仍然依赖于.dylib。
是否有一种方法可以使.so完全独立于是否安装了MySQL,即使这意味着使文件变得巨大?
如果存在这种解决方案,则应该同时在10.5和10.6上工作,因为目前我将在不同的机器上使用这两个版本。
发布于 2009-12-27 17:48:03
算了,再挖一遍就会发现自己了。实际上,这很简单;我会在这里记录解决方案,以防其他人需要它:
./configure,但是您需要--enable-static。可以肯定的是,我包括了--disable-shared,尽管它可能不是绝对必要的。我使用了以下方法,您的可能在其他方面有所不同:$ ./configure --prefix=/usr/local/mysql-src/ --enable-static --disable-shared --with-charset=utf8 --with-extra-charsets=ascii,binary,latin1 --with-collation=utf8_general_ci
$ make
$ sudo make install
(关于这里的字符集和排序规则参数:在这个用例中,它们可能完全没有必要,因为我以后将删除MySQL,但是由于所有客户端连接都使用了一些字符集/排序规则,所以我将覆盖我的基础UTF-8 -wise,以防MySQLdb使用的默认字符集/排序规则受到_mysql.so编译方式的影响-这比我希望以某种方式确认的方法更明智。)
http://pypi.python.org/pypi/MySQL-python
site.cfg set static = True和mysql_config = /usr/local/mysql-src/bin/mysql_config (或您在configure).
python setup.py build期间选择的任何路径)中,sudo python setup.by install。这将在您的.egg目录中创建一个site-packages,并将其添加到easy_install.pth文件中。virtualenv创建的各种虚拟环境中。这在10.5上有效,我很快就会在10.6上测试它,如果需要做一些不同的事情,在这里报告结果。
发布于 2014-06-02 13:27:10
我来到这里,试图在一个旧的linux上构建一个静态MySQLdb。我发现MySQL已经转换为cmake:
我能够构建这样的静态mysql:
# set INSTALL to taste, run from where you extracted the tar file
SOURCE=$(pwd) && mkdir bld && cd bld &&
cmake -DCMAKE_INSTALL_PREFIX=$INSTALL -DWITH_PIC=ON -DDISABLE_SHARED=ON \
-DDEFAULT_CHARSET=utf8 -DEXTRA_CHARSETS=ascii,binary,latin1 \
-DDEFAULT_COLLATION=utf8_general_ci \
$SOURCE请注意"WITH_PIC=ON“和"DISABLE_SHARED=ON”,这似乎与直觉相反,但是要构建动态可加载的MySQLdb python模块,需要使用-fPIC构建所有的MySQLdb静态库。
https://stackoverflow.com/questions/1966322
复制相似问题