Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 赛顿进口解释_Python_Cython - Fatal编程技术网

Python 赛顿进口解释

Python 赛顿进口解释,python,cython,Python,Cython,在第26行,我们有这样一行: self.sim = mujoco_py.MjSim(model, nsubsteps=n_substeps) mujoco_py MjSim文件如下: 我不明白这只赛昂犬是怎么工作的。我读过cython教程,但没有意义: 具体地说,在python中,我们必须执行:mujoco_py.mjsim.mjsim()来实例化mjsim对象。cython是如何加载这样的东西的,即MjSim对象可以在mujoco__py之后立即调用 此外,在第155行中: 有一个调用mjv

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

self.sim = mujoco_py.MjSim(model, nsubsteps=n_substeps)
mujoco_py MjSim文件如下:

我不明白这只赛昂犬是怎么工作的。我读过cython教程,但没有意义:


具体地说,在python中,我们必须执行:mujoco_py.mjsim.mjsim()来实例化mjsim对象。cython是如何加载这样的东西的,即MjSim对象可以在mujoco__py之后立即调用

此外,在第155行中:


有一个调用mjv_updateScene(…)。这个函数是在哪里定义的?

对于您在中编辑的关于mjv_updateScene的第二个问题的答案是:“他们有我见过的最糟糕的构建系统,毫无意义”

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

mjv_updateScene
本身已定义,其中间接包括

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



关于
MjSim
的初始问题在@JustinEzequiel关于
\uuuu init\uuuuuuuuy.py
的评论中得到了回答。请阅读您应该提供的答案,因为该问题必须是可以理解的,而无需遵循链接。我不了解cython代码是如何工作的,因此我不可能给出一个最小的示例“具体地说,在python中,我们必须执行:mujoco_py.mjsim.mjsim()来实例化mjsim对象”-您错过了
\uuuu init\uuu uu.py
,在那里它有
mjsim=cymj.mjsim
可能的副本专门回答了您的问题(这是@JustinEzequiel告诉您的)是的,找到了更新场景。那么PXD文件只是“公开”python的mujoco.h C头文件中的函数吗?你能解释一下一般的构建流程吗?我只是不知道如何向这个python包装器mujoco_py添加更多功能。我相信我可以向任何.pyx文件添加我自己的python函数。例如,“mjv_makeConnector”“在mujoco.pxd中,没有在任何pyx文件中使用,因此我相信我可以使用它向mjrendercontext.pyx添加一个新的python函数。然后下次我导入mujoco__ypy时,我可以使用我的新函数吗?或者我需要构建它吗?是的,pxd文件(主要)就是为了“公开”C函数。在编写良好的代码中,它们要么是通过
cimport
静态导入的,要么是如果它们与pyx文件同名,那么它们就有点像是从名称cimport*自动导入的
。老实说,我无法清楚地解释一般的构建流程。这是一片混乱,我放弃了尝试去理解这一切。但是:如果您编辑“mjrendercontext.pyx”,您将需要重新生成它以使用新函数(这肯定是真的!);要重建它,您通常会执行类似于“python setup.py build_ext”的操作,但使用此代码很难确定。。。