调用Python build-module时能否指定临时文件的其他目录?
解决Python build模块在只读项目目录生成临时文件的问题
你可以通过两种方式避免build在只读的项目目录下创建build/和*.egg-info/目录:
方法1:使用BUILD_TMPDIR环境变量
build模块支持未在--help中列出的BUILD_TMPDIR环境变量,用来指定所有临时文件的存放路径。执行构建命令时先设置这个变量,所有临时构建文件就会放到你指定的目录里,不会改动原项目目录:
BUILD_TMPDIR=/tmp/build_temp python3 -m build --wheel --outdir /tmp .
执行后,build/和myproject.egg-info/这类临时目录都会生成在/tmp/build_temp下,原只读项目目录保持不变。
方法2:复制项目到临时目录后构建
如果你的build版本不支持BUILD_TMPDIR(比如非常旧的版本),可以先把项目文件复制到一个临时目录,在临时目录里完成构建,最后清理临时目录:
# 创建临时项目目录 temp_proj=$(mktemp -d) # 复制当前项目的所有文件到临时目录 cp -r ./* "$temp_proj/" # 在临时目录执行构建,输出wheel到/tmp python3 -m build --wheel --outdir /tmp "$temp_proj" # 清理临时项目目录 rm -rf "$temp_proj"
这个方法完全隔离了原项目目录,确保不会有任何写入操作。
内容的提问来源于stack exchange,提问作者Mikhail T.
相关产品推荐
相关产品推荐

