Я использую один и тот же исполняемый файл Python (проверенный) как для создания сред с помощью PyCharm, так и с помощью ProcessBuilder в моем коде Java.
Виртуальная среда, созданная в PyCharm, работает. прекрасно, и я могу без проблем установить все необходимые зависимости.
Однако виртуальная среда, созданная с помощью ProcessBuilder в моем коде Java, не может установить те же зависимости, и я получаю ошибки при попытке их установить, особенно в отношении разрешений и конфликты пакетов.
Основная проблема заключается в том, что виртуальная среда, созданная с помощью ProcessBuilder, похоже, имеет проблемы с установкой зависимостей, хотя она основана на том же исполняемом файле Python, что и тот, который создан в PyCharm.
Конфликт вызван:
mediapipe 0.10.0 зависит от protobuf=3.11
tensorboard 2.10.1 зависит от protobuf=3.9.2
Эти зависимости находятся в venv, созданном в pycharm, и он работает.
Я создал несколько venv в pycharm, пытаясь заставить его выйти из строя, чтобы увидеть, в чем проблема, кроме очевидной проблемы с зависимостями, все они сработали.
Измените - в protobuf и на тот, который удовлетворяет проблеме зависимостей, и тогда код не работает, ха-ха.
Кто-нибудь сталкивался с этим несоответствием при управлении виртуальными средами через Java ProcessBuilder/через терминал? Может ли это быть связано с проблемой разрешений или есть что-то особенное, что может отличаться в том, как PyCharm и Java обрабатывают создание среды?
Код: Выделить всё
private void crearYActivarAmbienteVirtual() {
try {
// Command to create the virtual environment
String[] createCommand = {
"C:\\Python310\\python.exe",
"-m",
"venv",
"C:\\venv"
};
runProcess(
createCommand,
"Ambiente Virtual",
"El ambiente virtual se ha creado correctamente.",
"Error al crear el ambiente virtual."
);
// Directly invoke pip from the virtual environment
String pipPath = "C:\\venv\\Scripts\\pip.exe"; // Adjust for Windows paths
String[] installCommand = {
pipPath,
"install",
"-r",
"src/main/resources/PythonScript/requirements.txt"
};
runProcess(
installCommand,
"Requerimientos",
"Los requerimientos se han instalado correctamente.",
"Error al instalar los requerimientos."
);
} catch (IOException | InterruptedException e) {
Platform.runLater(() -> queueNotification("Error", "Error al configurar el ambiente virtual.", true));
}
}
private void runProcess(String[] command, String title, String successMsg, String errorMsg) throws IOException, InterruptedException {
Process process = new ProcessBuilder(command).start();
process.waitFor();
if (process.exitValue() == 0) {
Platform.runLater(() -> queueNotification(title, successMsg, false));
} else {
Platform.runLater(() -> queueNotification("Error", errorMsg, true));
}
}
ОШИБКА: Невозможно установить - r src/main/resources/PythonScript/requirements.txt (строка 46), -r src/main/resources/PythonScript/requirements.txt (строка 78) и protobuf==3.20.3, поскольку эти версии пакетов имеют конфликтующие зависимости.
Конфликт вызван:
mediapipe 0.10.0 зависит от protobuf =3.11
тензорная доска 2.10.1 зависит от protobuf=3.9.2
Подробнее здесь: https://stackoverflow.com/questions/792 ... pendencies
Мобильная версия