Windows Python subprocess.run(args) — sys.argv[0] всегда содержит фактический двоичный путь, а не тот, который был указаPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Windows Python subprocess.run(args) — sys.argv[0] всегда содержит фактический двоичный путь, а не тот, который был указа

Сообщение Anonymous »

Nuitka теперь поддерживает несколько дисков: использование --standalone --main a.py --main b.py упаковывает оба сценария в один файл a.exe, который теоретически можно использовать для запуска либо a.py, либо b. .py.
Способ, которым (на данный момент) nuitka определяет, какой сценарий запускать, заключается в проверке sys.argv[0].
Вопрос в следующем как запустить сценарии a или b из (например) другой скрипт Python, использующий (например) subprocess.run.
a.py

Код: Выделить всё

import sys
print(f'a: {sys.argv}')
b.py

Код: Выделить всё

import sys
print(f'b: {sys.argv}')
Создайте файл.exe

Код: Выделить всё

python -m nuitka --lto=no --onefile --follow-imports --main=a.py --main=b.py
После использования mklink b.exe a.exe.

Код: Выделить всё

2025-01-06  01:05 AM              a.onefile-build
2025-01-06  01:04 AM                35 a.py
2025-01-06  01:10 AM          b.exe [a.exe]
Тогда:

Код: Выделить всё

C:\Users\sl\work\tests\so2>a
a: ['C:\\Users\\sl\\work\\tests\\so2\\a.exe']
C:\Users\sl\work\tests\so2>b
b: ['C:\\Users\\sl\\work\\tests\\so2\\b.exe']

Это подтверждает, что запуск a.exe и b.exe из командного терминала работает правильно.
Теперь о run.py:

Код: Выделить всё

import subprocess
subprocess.run(["a","1"], executable="./a.exe")
subprocess.run(["b","2"], executable="./a.exe")
Создайте run.exe:

Код: Выделить всё

python -m nuitka --onefile --follow-imports run.py
Пробег, который:

Код: Выделить всё

/run
a: ['C:\\Users\\sl\\work\\tests\\a.exe', '1']
a: ['C:\\Users\\sl\\work\\tests\\a.exe', '2']
Будем признательны за предложения о том, как заставить это работать.
Я подозреваю, что попытаться распространить что-то, для работы чего требуется mklink, будет сложно.
п>

Подробнее здесь: https://stackoverflow.com/questions/793 ... ual-binary
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Что означает "sys.argv [1]"? (Что такое sys.argv, и откуда это взялось?)
    Anonymous » » в форуме Python
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • В чем разница между subprocess.call и subprocess.run в Python
    Anonymous » » в форуме Python
    0 Ответы
    57 Просмотры
    Последнее сообщение Anonymous
  • Неверное расположение аргументов при использовании sys.argv в Python для передачи аргументов командной строки
    Anonymous » » в форуме Python
    0 Ответы
    30 Просмотры
    Последнее сообщение Anonymous
  • Почему в sys.argv нет кавычек, когда они использовались в командной строке?
    Anonymous » » в форуме Python
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Почему моя программа не принимает sys.argv[1]? [закрыто]
    Anonymous » » в форуме Python
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»