Python easy_install: 指定存放所需文件的目录

5 投票
2 回答
3746 浏览
提问于 2025-04-16 10:20

我正在尝试使用easy_install来安装MySQL-python,但几乎立刻就失败了:

_mysql.c:36:23: 错误: my_config.h: 没有这个文件或目录
_mysql.c:38:19: 错误: mysql.h: 没有这个文件或目录
_mysql.c:39:26: 错误: mysqld_error.h: 没有这个文件或目录
_mysql.c:40:20: 错误: errmsg.h: 没有这个文件或目录

它找不到一些头文件。我已经安装了这些头文件,只是它们是从源代码安装到/opt目录下的。显然,它没有去那个地方找。那我该怎么让它去那里找呢?比如,如果这是一个配置过程,我可以做类似“--with-mysql=/opt/mysql”的操作。但在easy_install中似乎没有这样的选项。我还在继续研究,如果找到答案会在这里分享。

2 个回答

3

easy_install 是一个工具,它会调用 setup.py 文件,而这个文件会遵循它要安装的包中的 setup.cfg 文件。如果你想用 easy_install 来指定一些选项,比如 --include_dirs--library_dirs,直接在命令中是做不到的,但你可以把这些选项放到 setup.cfg 文件里。

我遇到过类似的问题,使用 pysqlite 时,我把 SQLite 放在了一个不常见的位置,想用 easy_install 来安装 Python 的绑定库。pysqlite 的包里有一个 setup.cfg 文件,里面有示例的 include_dirslibrary_dirs 指令,所以我知道该怎么做了。

如果 MySQL-python 也有一个 setup.cfg 文件,你可以尝试添加或修改它,内容可以包括:

[build_ext]
include_dirs = /path/to/headers
library_dirs = /path/to/libs

如果 setup.cfg 文件里已经有一个 [build_ext] 部分,记得在里面添加,而不是再创建一个新的。

5

这看起来更像是编译器搜索路径的问题,而不是easy_install的问题。

在调用easy_install之前,先设置一下包含路径的环境变量可能会有效。

C_INCLUDE_PATH=/path/to/your/mysql/include/files easy_install intall MySQL-python

如果这样还不行,可以试着设置INCLUDE_PATH或者CPLUS_INCLUDE_PATH这两个变量。问题中提供的easy_install输出信息不够,无法判断使用的是哪个编译器。

撰写回答