Cython导入说明

2024-05-16 07:59:43 发布

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

在第26行here我们有这样一行:

self.sim = mujoco_py.MjSim(model, nsubsteps=n_substeps)

mujoco\u py MjSim文件在这里:https://github.com/openai/mujoco-py/blob/master/mujoco_py/mjsim.pyx

我不明白这玩意儿是怎么工作的。我读了cython教程,但没有意义:https://cython.readthedocs.io/en/latest/src/quickstart/build.html

具体来说,在python中我们必须做:mujoco_py.mjsim.mjsim公司()来实例化MjSim对象。cython究竟是如何加载这样的东西,使得MjSim对象在mujoco\u py之后可以立即调用的?你知道吗

另外,在这里的第155行:https://github.com/openai/mujoco-py/blob/master/mujoco_py/mjrendercontext.pyx

有一个叫mjv\u updateScene(…)。这个函数是在哪里定义的?你知道吗


Tags: 对象pyhttpsselfgithubmastercomhere
1条回答
网友
1楼 · 发布于 2024-05-16 07:59:43

关于mjv_updateScene的第二个问题的答案是:“他们有我见过的最糟糕的构建系统,毫无意义”。你知道吗

我相信cymj.pyx是唯一一个实际构建的.pyx文件(尽管很难追溯到很久以前)。此文件手动(文本)包含所有其他.pyx文件。这违反了两个约定:第一,应该将内容进行cimported,而不是以文本形式包含(文本包含只是作为一种早期处理方式的人工制品而存在),第二,包含的文件应该命名为“.pxi”,以表示它们被包含(那么至少你知道它不是自包含的)。相反,包含的文件被命名为.pxi、.pyx或.pxd的混合文件,与它们的角色无关。你知道吗

mjv_updateScene本身在pxd/mujoco.pxd中定义,它间接地包含在generated/wrappers.pxi中。你知道吗

我对这个图书馆一无所知,但事实上他们认为这种安排是个好主意,这让我对其他东西的质量产生了严重的怀疑。(然而,这可能有很好的理由——我们偶尔都会做一些看起来可疑的博吉工作……)


关于MjSim的最初问题在@JustinEzequiel关于__init__.py的评论中得到了回答。你知道吗

相关问题 更多 >