Я столкнулся с проблемой: я создаю виртуальные среды Python с помощью Java ProcessBuilder в Windows, но среды, созданные таким образом (также пробовали с терминала, заканчивающегося таким же образом), не могут установить те жезависимости, которые отлично работают, когда я создаю виртуальную среду из PyCharm, используя тот же базовый исполняемый файл Python. Вот разбивка:
Я использую один и тот же исполняемый файл 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();
что касается ошибок, я просто делаю то же самое в терминале и смотрю, что выдает
ОШИБКА: Невозможно установить - 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
Различия в venv файлы
созданные pycharm
directory
-../user/pycharmprojects/project/venv
files
Я столкнулся с проблемой: я создаю виртуальные среды Python с помощью Java ProcessBuilder в Windows, но среды, созданные таким образом (также пробовали с терминала, заканчивающегося таким же образом), не могут установить [b] те же[/b] [b]зависимости[/b], которые отлично работают, когда я создаю виртуальную среду из PyCharm, используя [b]тот же базовый исполняемый файл Python. Вот разбивка: Я использую один и тот же исполняемый файл 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();
что касается ошибок, я просто делаю то же самое в терминале и смотрю, что выдает
ОШИБКА: Невозможно установить - 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 Различия в venv файлы созданные pycharm[/b] directory -../user/pycharmprojects/project/venv files [list] [*]lib [*]поделиться [*]скриптами pyvenv.cfg [/list] [b]команда создана[/b] directory -C/:venv files [list] [*]lib [*]include(empty) [*]скрипты [*]pyvenv.cfg [/list] [b]Разница в файлах .cfg[/b] pycharm home = C:\Python310 implementation = CPython version_info = 3.10.0.final.0 virtualenv = 20.24.5 include-system-site-packages = false base-prefix = C:\Python310 base-exec-prefix = C:\Python310 base-executable = C:\Python310\python.exe
команда home = C:\Python310 include-system-site-packages = false version = 3.10.0