【发布时间】:2018-01-06 07:14:37
【问题描述】:
嘿,伙计们,我肯定要疯了 我想强制 Python 像 .py 一样处理 .pyo 我得到了 kodi xbmc 分叉并变得疯狂
我已经尝试并更改了多行,但没有任何改变? 我把它们链接在这里:
const std::string ADDON_PYTHON_EXT = "*.py"; 将此行更改为 *.pyo
return URIUtils::HasExtension(m_strPath, ".py"); 将此行更改为。 .pyo
我认为编译后就足够了,尝试打开插件时仍然没有任何反应
仍然 python 不加载 .pyo 文件,也不将它们作为 .py 处理
顺便说一句:我想出删除文件夹中的所有 .py 文件,然后让第一个加载的 .py 文件放在那里,所以 1 -> .py 和其他都是 .pyo 插件的作品。 但是当删除这个首先加载的 .py 并将其用作 .pyo 它失败。 那么我必须改变它总是使用 .pyo
第一次更新:
我试过了, 它确实可以作为一种解决方法 创建了一个虚拟 -> include.py 只需 1 行导入服务就足够了。
但我想直接在 kodi 中解决这个问题。 在文档中 "如果当前有pyc文件,则将其作为编译后的版本,因此在运行命令前无需执行编译步骤。否则读取py文件,编译器必须对其进行编译"
说的很简单, 如果不可用则执行 .py 检查 .pyo 但我找不到在哪里更改/添加此方法 我什至找不到适合执行的方法
第二次更新: 我在githublink to file 中添加了这些行@
//pyoextension == script
std::string pyoextension = script;
//Check if the file does exist
if (!CFile::Exists(script, false))
{
//pyoextension append o to get -> .pyo
pyoextension = script + "o";
//Check if pyoextension exist -> .pyo
//if not nothing exist throw error
if (!CFile::Exists(pyoextension, false)){
CLog::Log(LOGERROR, "%s - Not executing non-existing script %s", __FUNCTION__, script.c_str());
return -1;
}
LanguageInvokerPtr invoker = GetLanguageInvoker(pyoextension);
return ExecuteAsync(pyoextension, invoker, addon, arguments);
}
LanguageInvokerPtr invoker = GetLanguageInvoker(script);
return ExecuteAsync(script, invoker, addon, arguments);
检查插件是否不存在作为 .py 文件检查 .pyo 文件是否存在,然后执行。但是检查仍然有效,但仍然会抛出无法启动脚本的错误
【问题讨论】: