python - Python创建依赖项的makefile
问题描述
我有一个基于 Makefile 的项目和一些创建绘图文件的 python 脚本,例如(在我的 Makefile 中)
plot.pdf: my_script.py
python my_script.py -o $@
通常这些脚本依赖于数据,例如my_data.txt
,所以我将它添加到我的 Makefile
plot.pdf: my_script.py my_data.txt
python my_script.py -o $@
这非常麻烦,因为我需要使 Makefile 和 python 脚本保持同步。所以我切换到从 python 脚本中导出 Make 规则:
plot.pdf: my_script.py
python my_script.py -o $@ --make-mode
--make-mode
将编写一个 Makefile 说明 on 的依赖plot.pdf
关系 my_data.txt
。我的 Makefile 设置为获取所有这些自动生成的 Makefile。
为了在我更改我的 python 脚本时支持增量构建,我声明了 on 的依赖plot.pdf
关系my_script.py
。但my_script.py
也取决于我写的其他python脚本。如果我更改这些脚本,例如utils.py
,我的文件plot.pdf
将不会更新。有没有办法从 python 中获取导入的 python 脚本的文件路径,所以我可以将它们添加到我的自动生成的 Makefile 中?或者你能推荐一种替代方法吗?
解决方案
最后我找到了一个让我高兴的答案:
import sys
print('\n'.join(
[modu.__file__ for modu in sys.modules.values()
if '__file__' in dir(modu)
and modu.__file__ is not None]
))
其中包含系统 python 脚本以及我的用户脚本。
推荐阅读
- amazon-web-services - 如何添加 cloudwatch 权限以在 serverless.yml 中调用 lambda?
- javascript - 为什么 es6 模板字符串在这种场合 Javascript 中需要双夸脱?
- c# - 如何从 Puppeteer chrome session C# 获取 cookie?
- performance - 访问大型 numpy 数组,同时保留其顺序
- c++ - 有没有办法为临时对象的参数禁用函数?
- emscripten - 预热 emscripten 缓存以加快构建速度
- java - @Embeded Entity 用于只读 Spring Data Jdbc
- rabbitmq - 如何配置 RabbitMQ 铲子?
- powerbi - 如何在没有任何日期参考的情况下计算动态移动平均线?
- c++ - Microsft Visual Studio C++ 2019 编译错误与 IMPLEMENT_DYNCREATE