为啥 ./configure 在 python setup.py 中不起作用?

Posted

技术标签:

【中文标题】为啥 ./configure 在 python setup.py 中不起作用?【英文标题】:Why doesn't ./configure work in python setup.py?为什么 ./configure 在 python setup.py 中不起作用? 【发布时间】:2014-07-18 20:55:33 【问题描述】:

当在 python setup.py 文件中使用 subprocess.call(["./configure"])subprocess.call(["make"]) 时,为什么 autotools 会查找错误的 automake 版本?我们正在调用:

$ python setup.py install
....
WARNING: 'automake-1.13' is missing on your system.

     You should only need it if you modified 'Makefile.am' or

     'configure.ac' or m4 files included by 'configure.ac'.

     The 'automake' program is part of the GNU Automake package:

     <http://www.gnu.org/software/automake>

     It also requires GNU Autoconf, GNU m4 and Perl in order to run:

     <http://www.gnu.org/software/autoconf>

     <http://www.gnu.org/software/m4/>

     <http://www.perl.org/>

【问题讨论】:

一段代码要显示,什么失败了?显示代码,提供完整的错误跟踪,解释“不起作用”是什么意思。 我的第一个猜测是 setup.py 过滤或破坏环境变量 【参考方案1】:

简答:用--disable-maintainer-mode关闭AM_MAINTAINER_MODE

长答案:尽管版本不同,但它不应该出错,因为它在命令行上工作正常。与 Python 打包过程有关的东西正在干扰。

当你这样做时

$ python setup.py sdist

setuptools 模块创建硬链接,从中制作 tar 存档,然后删除硬链接。在此链接过程中,文件上的时间戳已被修改,与原始修改时间不匹配,造成部分源文件已被修改的假象。

当 Makefile 运行时,它会注意到时间戳的差异。如果启用了AM_MAINTAINER_MODE,它将运行missing 脚​​本。然后,此脚本会检测 aclocal 的版本差异,从而导致 make 出错。

--disable-maintainer-mode 选项传递给配置脚本应该禁止调用missing 脚本并允许构建成功:

subprocess.call(["./configure", "--disable-maintainer-mode"])
subprocess.call(["make"])

(有关automake的维护者模式的更多信息,请参阅here。显然时间戳业务也是CVS用户的问题。)

【讨论】:

以上是关于为啥 ./configure 在 python setup.py 中不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

Stm32F103 的SPI通讯,为啥一直停在while(SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE)==RESET);

为啥@Autowired 在@Configuration 内部没有@Component 工作

python 来自http://scripting101.org/installing-configuring/autostart-ibm-websphere-application-server/s

为啥 Spring Boot Application 类需要有 @Configuration 注解?

为啥n85安装sis提示缺少"python for s60"组件?

vscode为啥configure用不了