Python Kodi强制Python处理.pyo like.py

2024-09-30 01:24:28 发布

您现在位置:Python中文网/ 问答频道 /正文

嘿,伙计们,我肯定是疯了 我想强制Python像处理.py一样处理.pyo 我把柯迪xbmc给叉了,然后疯了

我已经试过了,换了很多行,但什么都没改变? 我把它们联系在一起:

const std::string ADDON_PYTHON_EXT = "*.py"; 将此行改为*.pyo

return URIUtils::HasExtension(m_strPath, ".py");将此行更改为。杓

我以为编译之后就足够了,但是当尝试打开一个附加组件时,还是什么都没有发生

python仍然不加载.pyo文件,也不将它们作为.py处理

顺便说一句:我想删除文件夹中的所有.py文件,只让第一个加载的.py文件在那里,这样1->;.py和其他所有的都是.pyo这个附加组件就可以工作了。 但是当删除这个第一次加载的.py并将其用作.pyo时 它失败了。 所以我要改变它一直使用的东西

首次更新:

我试过了, 它确实是一种解决办法 创建了一个假人->;include.py 只有一条线的进口服务就足够了。在

但我想直接用kodi解决这个问题。 在文档中 如果有一个当前的pyc文件,它将被视为编译版本,因此在运行命令之前不必执行任何编译步骤。否则将读取py文件,编译器必须编译它“

这么简单的说, 如果不可用则执行.py检查if.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文件是否存在,然后执行该文件。但是检查仍然有效,但是仍然抛出一个错误,即无法启动脚本


Tags: 文件to方法pygtstringreturnif
2条回答

改变这样的行(const std::string ADDON_PYTHON_EXT = "*.py"; changed this line to *.pyo)不是一个好的解决方案

主要原因是kodi被配置为使用.py扩展名从addon.xml文件加载,传统的做法是所有的附加组件。更改这样的头文件只会导致您的自定义内部版本kodi中的work加载项,并且您必须修改所有其他加载项。在

我最喜欢的解决方案是你应该遵循以下步骤:

  • 在python脚本中创建一个函数(我们将其称为service()的函数,该函数执行文件service.py中所有必需的代码)
  • 现在创建一个python文件(include.py),将其包含在addon.xml中,代码如下:

include.py

import service
service.service()

这可能不值得,Kodi很快就要搬到python3上了,python3丢弃了pyo文件。它可能会使用pyc,但现在还不确定。在

相关问题 更多 >

    热门问题