gpt4 book ai didi

python - mysql-python : building a completely standalone _mysql. 所以在 Mac OS X 上?

转载 作者:行者123 更新时间:2023-11-29 04:31:18 25 4
gpt4 key购买 nike

我在 VMware Fusion 下的 Linux VM (Ubuntu 9.10) 中运行数据库服务器,但在 Mac 端编写 Django 代码。安装mysql-python需要在Mac上安装MySQL,将_mysql.so编译成site-packages

但是,完成后,我在 Mac 端不再使用 MySQL,而宁愿将其删除。当然,当_mysql.so需要/usr/local/mysql/lib/libmysqlclient_r.16.dylib时,这是不可能的。

在 mysql-python 的 site.cfg 中有一个“static”选项,当设置为“true”时,会显着增加 _mysql.so 的大小文件,但它仍然依赖于 .dylib。

有没有办法使 .so 完全独立于是否安装了 MySQL,即使这意味着使文件变得巨大?

解决方案(如果存在)应该适用于 10.5 和 10.6,因为我暂时将在不同的机器上使用这两个版本。

最佳答案

没关系,经过更多挖掘后发现了自己。实际上,这很简单;我会在这里记录解决方案以防其他人需要它:

  1. 从 mysql.com 获取 MySQL 的源压缩包(不是特定于平台的二进制压缩包)

  2. 解压它,运行 ./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 以防万一 MySQLdb 使用的默认字符集/排序规则受到 _mysql.so 编译方式的影响——比我更聪明的人可能想以这种或另一种方式确认这一点。)

  3. http://pypi.python.org/pypi/MySQL-python 获取最新的mysql-python 源码包

  4. 解压它,并在 site.cfg 中设置 static = Truemysql_config =/usr/local/mysql-src/bin/mysql_config (或您在 configure 期间选择的任何路径)。

  5. 运行 python setup.py build。编译结束时可能会出现一些架构相关的错误,但可以忽略。

  6. 运行 sudo python setup.by install。这会在您的 site-packages 目录中创建一个 .egg,并将其添加到 easy_install.pth 文件中。

  7. 大功告成!您现在可以删除 MySQL 的所有痕迹以及 mysql-python 源。 egg 可以按原样复制到运行相同版本 OS X 的其他 Mac。我很高兴将它复制到我们说话时使用 virtualenv 创建的各种虚拟环境。

这在 10.5 上有效,我很快会在 10.6 上测试它,如果需要做一些不同的事情,请在此处报告结果。

关于python - mysql-python : building a completely standalone _mysql. 所以在 Mac OS X 上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1966322/

25 4 0