Открыть .pyc файл с помощью C#

331
15 июля 2017, 06:01

У меня есть проект на C#, но некоторые его части написанны python 3.5. Я хочу, чтобы при запуске моего C# проекта, автоматически запускался и моя python программа. С помощью pyinstaller, я превратил свой .py файл в .pyc. Вот способы которыми я способал открыть файл с помощью C#:

static void Main(string[] args)
{
    //Я знаю, что File.Open() открывает FileStream для чтения и записи. Попробовал это от безысходности
    File.Open(filepath, FileMode.Open);
    Console.ReadLine();
}

Этот вариант просто не сработал, запускалась пустая консоль и ничего не происходило (я точно уверен что .pyc не запустился, ибо он должен был написать Hello World! в определённый текстовый файл, чего он не сделал)

static void Main(string[] args)
{
    Process prc = new Process();
    prc.StartInfo = new ProcessStartInfo();
    prc.StartInfo.FileName = filepath;
    prc.StartInfo.WorkingDirectory = Path.GetDirectoryName(filepath);
    prc.StartInfo.UseShellExecute = false;
    prc.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
    prc.Start();
}

Этот вариант выдал Win32Exception с информацией:

Указанный исполняемый файл не является действительным

P.S При преобразовании из .py в .pyc, pyinstalller также создал .exe файл с именем моего python скрипта, но он (в отличие от файлов .py и .pyc), выдает Error (аналог Exception на python) сразу при запуске (даже если запуск из среды)

UPD: Попробовал сделать .pyc файл аргументом к .exe файлу, получился такой код:

static void Main(string[] args)
{
    Console.WriteLine("Attempting to start process 'File_Bot.exe'...");
    Process prc = new Process();
    prc.StartInfo = new ProcessStartInfo();
    prc.StartInfo.FileName = exePath;
    prc.StartInfo.WorkingDirectory = Path.GetDirectoryName(exePath);
    prc.StartInfo.Arguments = pycPath;
    prc.StartInfo.UseShellExecute = false;
    prc.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
    prc.Start();
    Console.WriteLine("Process {0}.exe started!", prc.ProcessName);
    Console.ReadLine();
}

Оба сообщения на консоль выводятся, но процесс не делает то, что должен (хотя .py файл на котором он основам делает). Процесс даже не появляется в диспетчере задач...

Также попробовал запустить .exe из консоли, выдал Stack Trace который не выдается при запуске .py файла

READ ALSO
Отловить клик по браузеру c#

Отловить клик по браузеру c#

Как можно отловить нажатие на браузер ? даже в пустое место ? Пока использую метод webBrowser1_DocumentCompleted , но он работает только, если я спровоцирую...

263
Как проверить открыт ли сейчас файл?.NET

Как проверить открыт ли сейчас файл?.NET

Нужно првоерить открыт ли сейчас файл в других процессах

350
Вопрос по выводу

Вопрос по выводу

В этом задании необходимо написать программу, объявит две переменные: первая переменная - переменная целочисленного (int) типа со значением...

256