上下文:我正在Ubuntu服务器上处理一些Python脚本。我需要使用一些用Python 2.7编写的代码,但我们的服务器有Python 2.5。我们安装了2.7作为Python的第二个实例,所以我们不会破坏任何依赖于2.5的东西。现在我需要安装MySQLdb包。我假设我不能通过运行apt-get install python-mysqldb
来实现这一点,因为它可能只是重新安装到python 2.5,所以我只是想手动安装它。
问题:在MySQL-python-1.2.3目录中,我尝试运行python2.7 setup.py build
并收到错误消息:
sh:/etc/mysql/my.cnf:权限被拒绝
以及一个说明setup.py无法找到该文件的Traceback。
请注意,setup.py脚本默认在$ PATH目录中查找mysql_config
文件,但我们服务器的mysql配置文件是/etc/mysql/my.cnf
,因此我更改了包{{1}要匹配的文件。我检查了文件的权限,即-rw-r - r--。我尝试以root身份运行脚本并得到同样的错误。
有什么建议吗?
答案 0 :(得分:2)
据我所知,“mysql_config”和“my.cnf”之间存在非常显着的差异。
“mysql_config”通常位于MySQL安装的“bin”文件夹中,执行时会吐出有关安装的各种文件系统位置信息。
“my.cnf”是MySQL自己使用的配置脚本。
简而言之,当脚本要求“mysql_config”时,它应该用字面意思是名称为“mysql_config”的可执行文件,而不是您要提供的文本配置文件。 MYSQLdb需要“mysql_config”文件,以便它知道要使用哪些库。而已。它不会直接读取您的MySQL配置。
您遇到的错误可以归结为;
它正在尝试打开错误的文件并遇到权限问题。
即使在尝试打开该文件后,仍然无法找到“mysql_config”文件。
从这里,您需要找到MySQL安装的“bin”文件夹,并检查它是否包含“mysql_config”。然后你可以编辑文件夹路径到“site.cnf”文件,你应该很高兴。
答案 1 :(得分:0)
您确定该文件在构建过程的其他部分中没有硬编码吗?为什么不在构建期间将它添加到$ PATH?
由于某种原因,脚本是否需要编写该文件?构建脚本是否使用su或sudo来尝试成为其他用户?您是否完全确定权限以及以root身份运行脚本的事实?
如果你仍然无法做到这一点,这真的很奇怪。你使用的是chroot还是virtualenv?