问题描述
问题在于运行我的代码。在项目中,WPF (C#) 应用程序应该运行用 cx_freeze 制作的可执行 python 文件。问题是它仅在我将项目作为 .zip 文件传递给其他人时才有效。当我尝试推送到 git 然后拉到某个地方时,此代码 cmd 会引发错误,如下所示。我看到有相同错误的线程,其他人说 PYTHONHOME nad PYTHONPATH 应该取消设置。但正如你所看到的,它们是未设置的(默认是)。项目包含登录后在后台运行 python .exe 代码的 WPF 应用程序。带有内置代码的文件夹包含在 WPF 中运行的 main.exe 文件、带有 python 包(.py 文件)的文件夹、带有文件的文件夹 lib,您可以在屏幕和文件 - python3.dll、python38.dll。我想让它不仅在 .zip 包中工作,而且在从 git 存储库中提取后工作。
Python path configuration:
PYTHONHOME = (not set)
PYTHONPATH = (not set)
program name = 'C:\Users\d4wt0\Desktop\pracka\wpf1207\desktopapp2\experiment_stream\build\exe.win-amd64-3.8\main.exe'
isolated = 0
environment = 0
user site = 1
import site = 0
sys._base_executable = 'C:\\Users\\d4wt0\\Desktop\\pracka\\wpf1207\\desktopapp2\\experiment_stream\\build\\exe.win-amd64-3.8\\main.exe'
sys.base_prefix = ''
sys.base_exec_prefix = ''
sys.executable = 'C:\\Users\\d4wt0\\Desktop\\pracka\\wpf1207\\desktopapp2\\experiment_stream\\build\\exe.win-amd64-3.8\\main.exe'
sys.prefix = ''
sys.exec_prefix = ''
sys.path = [
'C:\\Users\\d4wt0\\Desktop\\pracka\\wpf1207\\desktopapp2\\experiment_stream\\build\\exe.win-amd64-3.8\\lib\\library.zip','C:\\Users\\d4wt0\\Desktop\\pracka\\wpf1207\\desktopapp2\\experiment_stream\\build\\exe.win-amd64-3.8\\lib',]
Fatal Python error: init_fs_encoding: Failed to get the Python codec of the filesystem encoding
Python runtime state: core initialized
ModuleNotFoundError: No module named 'encodings'
Current thread 0x00003040 (most recent call first):
<no Python frame>
从 C# 运行 exe:
static readonly string path_prefix = "\\..\\..\\..\\..";
static string dir_path = Directory.GetCurrentDirectory();
private static void run_file(string fileName,bool wait = false)
{
processstartinfo info = new processstartinfo("cmd.exe");
info.Arguments = "/K " + fileName;
Process.Start(info);
}
public static void select_ROI()
{
if (run_py)
{
string select_roi = dir_path + path_prefix + "\\experiment_stream\\build\\exe.win-amd64-3.8\\main.exe";
run_file(select_roi);
}
}
setup.py 使用 cx_freeze 构建 exe:
import sys
from cx_Freeze import setup,Executable
includefiles = ['calibration_package/points.csv','ffmpeg/','calibration_package/','communication_package/','gaze_tracker_package/','model_package/','recorder_package/','log_package/','CASES/','configs/'
]
packages = ['os','socket','cv2','pathlib','glob','time','numpy','pandas','subprocess','signal','sklearn','json','scipy','random','imutils.video','PIL','threading','queue','configparser'
]
base = None
if sys.platform == "win32":
base = "win32gui"
setup(
name = "ET",version = "0.2",description = "eye_tracker",options = {"build_exe": {'packages': packages,'include_files': includefiles}},executables = [Executable("main.py")]
)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)