据我所知,如果您为下面的变量赋值,则会在声明时为其分配值:
VER:=value
但是当我这样做时:
VER:=`python xxx.py`
....
cd ../../pythoncode && python yyy.py $(VER)
我收到错误说没有找到xxx.py文件,这是因为xxx.py在当前文件夹中,但是当cd ../../pythoncode时,找不到xxx.py。
声明VER时如何设置VER的值?所以这样,VER值设置在cd ../../pythoncode之前,谢谢。
LJ
答案 0 :(得分:1)
您混淆变量赋值时间和python运行时路径查找。
您的变量值 设置为分析时间。那不是问题。
问题是脚本的路径是一个相对路径,路径解析/查找是由需要使用该文件时使用该文件的任何进程完成的。因此,当您在该配方行中运行python
时,python进程看到xxx.py
并假设它相对于当前目录,因为您还没有告诉它任何其他内容。
您可以使用VER:= python $(abspath xxx.py)
在解析时解析xxx.py
并将其转换为绝对路径。然后,当您稍后运行python
时,它将获得脚本的绝对路径,而不是相对的路径。
还有其他方法可以解决这个问题,但对于这种情况,这可能是最简单的。