Может быть Подпроцесс Python.Popen обрабатывает/игнорирует ошибку ENOENT при запуске приложения Electron и в обязательном порядке продолжает работу, как в командной строке

#python #java #electron #subprocess #enoent

#питон #Ява #электрон #подпроцесс #enoent

Вопрос:

подпроцесс.открытие вызывает появление ошибки ./jre/bin/явное исключение java

 import subprocess subprocess.run([r"C:Userslt;usergt;AppDataLocalProgramslt;some_dirgt;lt;some_toolgt;.exe", "--args", "--remote-debugging-port=9000"])  

Также пробовал,

 subprocess.Popen([r"C:Userslt;usergt;AppDataLocalProgramslt;some_dirgt;lt;some_toolgt;.exe", "--args", "--remote-debugging-port=9000"])  

Также попробовал shell=True param в Popen, но не решил

Ошибка после запуска приложения Electron через подпроцесс

Ручной запуск этого приложения не вызывает никаких проблем.

  1. Не уверен, что вызывает эту проблему — Как я могу исправить то же самое?
  2. Когда я запускаю эту команду из, в выводе консоли появляется нечто подобное, но диалоговое окно блокировки не появляется, и приложение не аварийно завершает работу — Есть ли способ, которым я могу

также повторите поведение БЕЗ сбоев в python.

Ниже приведен вывод командной строки:

 c:Userslt;usergt;AppDataLocalProgramslt;base_dirgt;gt; 18:56:05.542 gt; Start in production mode 18:56:05.585 gt; electron-log.transports.file: Can't write to c:Userslt;usergt;AppDataLocalProgramslt;base_dirgt;resourcesapp.asarlogsmain.log Error: ENOTDIR, not a directory  at createError (electron/js2c/asar_bundle.js:5:1382)  at Object.e.mkdirSync (electron/js2c/asar_bundle.js:5:12161)  at e (c:Userslt;usergt;AppDataLocalProgramslt;base_dirgt;resourcesapp.asarbackground.js:1:249748)  at l.testFileWriting (c:Userslt;usergt;AppDataLocalProgramslt;base_dirgt;resourcesapp.asarbackground.js:1:249938)  at l.createFile (c:Userslt;usergt;AppDataLocalProgramslt;base_dirgt;resourcesapp.asarbackground.js:1:249488)  at l.provide (c:Userslt;usergt;AppDataLocalProgramslt;base_dirgt;resourcesapp.asarbackground.js:1:249315)  at d (c:Userslt;usergt;AppDataLocalProgramslt;base_dirgt;resourcesapp.asarbackground.js:1:246666)  at h (c:Userslt;usergt;AppDataLocalProgramslt;base_dirgt;resourcesapp.asarbackground.js:1:246165)  at i (c:Userslt;usergt;AppDataLocalProgramslt;base_dirgt;resourcesapp.asarbackground.js:1:47829)  at n (c:Userslt;usergt;AppDataLocalProgramslt;base_dirgt;resourcesapp.asarbackground.js:1:47621) 18:56:05.606 gt; Launching server at backendlt;applicationgt;-backend-0.0.1-SNAPSHOT.jar at port 8885... 18:56:05.724 gt; Server PID: 69044 18:56:10.731 gt; 18:56:10.733 gt; . ____ _ __ _ _ 18:56:10.737 gt; /\ / ___'_ __ _ _(_)_ __ __ _     18:56:10.739 gt; ( ( )___ | '_ | '_| | '_ / _` |     18:56:10.740 gt; \/ ___)| |_)| | | | | || (_| | ) ) ) ) 18:56:10.741 gt; ' |____| .__|_| |_|_| |___, | / / / / 18:56:10.742 gt; =========|_|==============|___/=/_/_/_/ 18:56:10.744 gt; :: Spring Boot :: (v2.5.4) 18:56:10.745 gt; 18:56:11.126 gt; 2021-12-10 18:56:11.119 INFO 69044 --- [ main] p.core.lt;applicationgt;BackendApplication : Starting lt;applicationgt;BackendApplication using Java 11.0.13 on G1-6FWX7C3-L with PID 69044 (C:Userslt;usergt;AppDataLocalProgramslt;base_dirgt;backendlt;applicationgt;-backend-0.0.1-SNAPSHOT.jar started by lt;usergt; in c:Userslt;usergt;AppDataLocalProgramslt;base_dirgt;) 18:56:11.127 gt; 2021-12-10 18:56:11.126 INFO 69044 --- [ main] p.core.lt;applicationgt;BackendApplication : No active profile set, falling back to default profiles: default 18:56:18.360 gt; 2021-12-10 18:56:18.359 INFO 69044 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8885 (http) 18:56:18.446 gt; 2021-12-10 18:56:18.444 INFO 69044 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 18:56:18.447 gt; 2021-12-10 18:56:18.445 INFO 69044 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.52] 18:56:18.889 gt; 2021-12-10 18:56:18.887 INFO 69044 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 18:56:18.891 gt; 2021-12-10 18:56:18.888 INFO 69044 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 7499 ms 18:56:23.934 gt; 2021-12-10 18:56:23.933 INFO 69044 --- [ main] o.s.b.a.e.web.EndpointLinksResolver : Exposing 14 endpoint(s) beneath base path '/rest/actuator' 18:56:24.174 gt; 2021-12-10 18:56:24.172 INFO 69044 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8885 (http) with context path '' 18:56:24.241 gt; 2021-12-10 18:56:24.241 INFO 69044 --- [ main] p.core.lt;applicationgt;BackendApplication : Started lt;applicationgt;BackendApplication in 15.385 seconds (JVM running for 17.665) 18:56:24.644 gt; 2021-12-10 18:56:24.642 INFO 69044 --- [nio-8885-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet' 18:56:24.645 gt; 2021-12-10 18:56:24.643 INFO 69044 --- [nio-8885-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' 18:56:24.657 gt; 2021-12-10 18:56:24.647 INFO 69044 --- [nio-8885-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 4 ms  

Комментарии:

1. вы пробовали Popen с subprocess

2. да @TamilSelvan это то, что я пытался, но не получилось

3. Это распространенный FAQ, вам нужно полностью разделить командную строку на список, например subprocess.run([r"C:Userslt;usergt;AppDataLocalProgramslt;some_dirgt;lt;some_toolgt;.exe", "--args", "--remote-debugging-port=9000"]) . Подожди, пока я поищу подходящий дубликат.

4. @tripleee — я тоже пробовал, но не получилось — я также искал эти решения, но не сработало

5. Вторичная ошибка не связана ни с чем в Python. Если lt;some_toolgt;.exe Java запускается неправильно, вы ничего не можете сделать с помощью вызывающего кода, чтобы исправить это.

Ответ №1:

Хорошо — итак, пакет Electron был в комплекте со своей собственной jre версией, которая вызывала проблему, поскольку вызов exe вызывал поиск зависимостей JAVA по системному jre пути по умолчанию вместо того, который был в комплекте с приложением Electron.

Решение — переключитесь в базовый каталог приложения, а затем запустите его:

 import subprocess, os from subprocess import * os.chdir(r"C:app_dir") subprocess.Popen(['app.exe'])  

Надеюсь, это поможет кому-то, кто столкнется с подобной проблемой.