Files
Python-bindings-for-nodejs/scripts/install-python-deps.js

51 lines
1.2 KiB
JavaScript
Raw Normal View History

2025-11-18 11:02:39 +01:00
import { execSync } from "child_process";
import { writeFileSync } from "fs";
import path from "path";
const candidates = [
"/usr/bin/python3.9",
"python3",
"python"
];
const pythonPathFile = path.resolve(process.cwd(), "python-path.txt");
function checkPython(pythonCmd) {
try {
execSync(`${pythonCmd} --version`, { stdio: "ignore" });
execSync(`${pythonCmd} -m pip --version`, { stdio: "ignore" });
return true;
} catch {
return false;
}
}
function installDeps(pythonCmd) {
try {
console.log(`Using Python command: ${pythonCmd}`);
execSync(`${pythonCmd} -m pip install -r requirements.txt`, { stdio: "inherit" });
writeFileSync(pythonPathFile, pythonCmd, "utf-8");
console.log(`✅ Python packages installed successfully. Saved Python path to ${pythonPathFile}`);
process.exit(0);
} catch (err) {
console.error("Failed to install Python packages with", pythonCmd);
}
}
function main() {
for (const cmd of candidates) {
if (checkPython(cmd)) {
installDeps(cmd);
return;
}
}
console.error(
"\n⚠ Python or pip not found or pip is broken.\n" +
"Please install Python 3 and pip manually, then run:\n\n" +
" pip install -r requirements.txt\n"
);
process.exit(1);
}
main();