enable recreating a python virtual env (.venv folder) inside sandbox (#253)
This commit is contained in:
parent
0556358560
commit
3a1abb07bf
|
@ -231,6 +231,28 @@ export async function start_sandbox(sandbox: string) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// if VIRTUAL_ENV is set, require that it is workdir/.venv
|
||||||
|
// then mount-replace it with sandbox.venv under project settings directory
|
||||||
|
// this helps avoid host binaries in sandbox and lets uv work seamlessly w/o requiring --active flag
|
||||||
|
// sandbox must be ready to set up an empty .venv directory via sandbox.{Dockerfile,bashrc}
|
||||||
|
if (process.env.VIRTUAL_ENV) {
|
||||||
|
const workdirVenvPath = path.join(workdir, '.venv');
|
||||||
|
if (workdirVenvPath !== process.env.VIRTUAL_ENV) {
|
||||||
|
console.error(
|
||||||
|
`ERROR: VIRTUAL_ENV '${process.env.VIRTUAL_ENV}' is not supported; should be ${workdirVenvPath}`,
|
||||||
|
);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
const sandboxVenvPath = path.resolve(
|
||||||
|
SETTINGS_DIRECTORY_NAME,
|
||||||
|
'sandbox.venv',
|
||||||
|
);
|
||||||
|
if (!fs.existsSync(sandboxVenvPath)) {
|
||||||
|
fs.mkdirSync(sandboxVenvPath, { recursive: true });
|
||||||
|
}
|
||||||
|
args.push('--volume', `${sandboxVenvPath}:${workdirVenvPath}`);
|
||||||
|
}
|
||||||
|
|
||||||
// copy additional environment variables from SANDBOX_ENV
|
// copy additional environment variables from SANDBOX_ENV
|
||||||
if (process.env.SANDBOX_ENV) {
|
if (process.env.SANDBOX_ENV) {
|
||||||
for (let env of process.env.SANDBOX_ENV.split(',')) {
|
for (let env of process.env.SANDBOX_ENV.split(',')) {
|
||||||
|
|
Loading…
Reference in New Issue