Запустите исполняемый файл, который использует Python

Я новичок в программировании и C#, я пытаюсь написать программу, которая обнаруживает ошибки или сбои сервера с моего сервера Battlefield 2, затем он выключит сервер (если сервер еще не выключен) и запустит его снова, но Я столкнулся с небольшим ударом. Когда я пытаюсь снова запустить Battlefield 2, я получаю эту ошибку от bf2:

Отладочное утверждение не удалось! Версия 1.0.2446.12 Дата сборки:
Модуль: Python
Файл: c:\dice\Projects\BF2Branches\BF2Demo\Code\BF2\Game\Python\PythonHost.Cpp
Линия:243

Текст: не удалось импортировать модуль bf2:

Текущий конфил:

Путь в ошибке не существует.

Я исследовал несколько разных способов запуска приложения, но все они имеют одинаковые результаты. Это пара, которую я пробовал до сих пор:

Process proc = new Process();
proc.StartInfo.FileName = @"txtServerPath.Text";
proc.Start();

а также

Process.Start(txtServerPath.Text);

Когда я вручную запускаю сервер bf2, он запускается нормально. Так что я делаю не так?
Моя программа будет работать как с Windows Server 2003, так и с Windows 7, если это имеет значение.

1 ответ

Отладочное утверждение не удалось! Версия 1.0.2446.12 Дата сборки: Модуль: Python Файл: c:\dice\Projects\BF2Branches\BF2Demo\Code\BF2\Game\Python\PythonHost.Cpp Строка:243

Текст: не удалось импортировать модуль bf2:

Текущий конфил:

Путь в ошибке не существует, потому что это путь на компьютере, на котором был написан PythonHost.cpp. "Отладочное утверждение" означает, что разработчик кода поместил проверку условия на указанный номер строки в файле cpp, чтобы проверить наличие определенного условия, чтобы убедиться, что "все работает нормально". но, очевидно, это не так. Хотя странно, что BF2 установил отладочную версию.

Во всяком случае, ваш процесс запускается, но он выдает ошибки. И проблема, похоже, в том, что он не может найти модуль python с именем 'bf2', когда вы запускаете процесс из C#.

Поэтому прежде всего убедитесь, что {BF2 Install folder}\python\bf2\ __init__.py существует.

Чтобы лучше понять, почему это может происходить, попробуйте запустить BF2 следующим образом (при условии, что ваше приложение C# является консольным приложением):

Process bf2 = new Process();
bf2.StartInfo.FileName = @"C:\Program Files\EA Games\Battlefield 2\BF2.exe";
bf2.StartInfo.Arguments = "+debugOutput 1";
bf2.StartInfo.UseShellExecute = false;
bf2.StartInfo.RedirectStandardOutput = true;
bf2.StartInfo.RedirectStandardError = true;
bf2.Start();    

Console.WriteLine(bf2.StandardOutput.ReadToEnd());
Console.WriteLine(bf2.StandardError.ReadToEnd());

Это должно напечатать некоторые журналы на консоли, через которые, я подозреваю, можно извлечь что-то полезное.

Кстати, вы можете опубликовать оставшееся сообщение об ошибке (т.е. после строки "Текущий файл:")

Другие вопросы по тегам