我正在为Python项目使用Makefiles。我需要在每个Makefile中包含一些Python配置变量,并且Makefile可以驻留在项目根目录中的各个子目录中(尽管不超过一个级别)。
在项目的根目录中,我创建了一个Makefile.inc,例如,包含以下内容:
define PYSCRIPT
from lib.custommodule import VAR1
print(VAR1)
endef
VAR1 := $(shell python -c '$(PYSCRIPT)')
' custommodule'存在于项目的Python lib目录根目录中,包含Makefile.inc的顶级所有Makefile都可以正常执行。
在'子目录/ Makefile'中,我有:
include ../Makefile.inc
echo $(VAR1)
当我cd subdirectory && make
时,收到错误:
ImportError: No module named custommodule
我已尝试将Python路径添加到' Makefile.inc' (在define PYSCRIPT
块中)包含父目录,认为'子目录/ Makefile'正在执行' ../ Makefile.inc'在它自己的路径与其父路径之间,但这也不起作用。
我错过了阻止这种情况发生的事情吗?或者是否有更好的方法来实现我尝试的目标?
答案 0 :(得分:0)
Makefile.inc
如何:
ROOTDIR ?= .
define PYSCRIPT
from lib.custommodule import VAR1
print(VAR1)
endef
export PYSCRIPT
VAR1 := $(shell PYTHONPATH=$(ROOTDIR) python -c "$$PYSCRIPT")
和subdirectory/Makefile
:
ROOTDIR = ..
include $(ROOTDIR)/Makefile.inc
all:
echo $(VAR1)
未经测试。