You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Makefile工作目录,指定Python脚本数据库生成路径?

解决Makefile运行Python脚本时数据库路径错误的问题

我明白你的困扰——通过Makefile启动Python脚本时,本该在脚本所在目录生成的数据库跑到了Makefile的目录下。这背后的原因其实很简单:你在Makefile循环里的cd ${dir}只是在Make进程的shell环境里切换了目录,但gnome-terminal启动的新终端进程会继承Makefile所在的初始工作目录,并不会跟着切换到脚本目录。

下面给你两种可行的解决方案:

方案1:让gnome-terminal启动时切换到脚本目录

gnome-terminal支持用--working-directory参数指定新终端的工作目录,你只需要修改Makefile里的循环命令,把脚本所在目录传给这个参数就行:

PYTHON = python3
TERMINAL = gnome-terminal
TFLAG = --
# 替换为你实际的脚本文件夹列表
FOLDERS = PythonScript1 PythonScript2 PythonScript3
run:
	for dir in $(FOLDERS); do \
		${TERMINAL} --working-directory="$${dir}" ${TFLAG} ${PYTHON} main.py ; \
	done

这样每个新终端都会先切换到对应的脚本目录,再执行main.py,数据库自然就会生成在预期的位置了。

方案2:在Python脚本中固定数据库路径(更可靠)

如果担心不同终端的参数差异,或者希望脚本不管从哪里启动都能正确生成数据库,你可以直接在Python脚本里获取自身所在的目录,然后基于这个路径创建数据库。比如在main.py里这么写:

import os

# 获取当前脚本所在的绝对路径
script_dir = os.path.dirname(os.path.abspath(__file__))
# 拼接数据库文件的完整路径
db_path = os.path.join(script_dir, "your_database.db")

# 后续用db_path来创建/操作数据库即可

这种方法从根源上避免了工作目录的问题,不管是通过Makefile、终端手动运行,还是其他方式启动脚本,数据库都会生成在脚本所在目录。

你可以根据自己的需求选择其中一种方案,第一种改Makefile更快捷,第二种更通用稳定。

内容的提问来源于stack exchange,提问作者user169808

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 15:22:52