py文件是什么文件(pyd文件是什么)

py文件是什么文件(pyd文件是什么)p 因为种种原因 有时候我们需要将 py 文件编译成 pyd 文件 但在 Maya 的环境下 如果是用官方的 Python 编译出来的 pyd 肯定不能用 包括 PyQt 如果想在 Maya 环境下运行也是需要特殊编译下 下面就以 Maya2019 位例来演示下实现方法 p p 与 Maya2019 对应的 VS 是 2015 具体对应版本可以查看 PluginWizard 里面的说明 p

大家好,我是讯享网,很高兴认识大家。




讯享网

           <p>因为种种原因,有时候我们需要将py文件编译成pyd文件,但在Maya的环境下,如果是用官方的Python编译出来的pyd肯定不能用,包括PyQt,如果想在Maya环境下运行也是需要特殊编译下;下面就以Maya2019位例来演示下实现方法。</p><p>与Maya2019对应的VS是2015,具体对应版本可以查看PluginWizard里面的说明,所以需要安装VS2015,这是后面编译pyd所必需的。</p><p style="white-space: normal;"><br/></p><p style="white-space: normal;"><br/></p><p style="white-space: normal;"><img src="https://wangqiguang.work/zb_users/upload/2021/12/202112211640017760585274.png" alt="image.png"/></p><p style="white-space: normal;"><strong>1.准备工作</strong></p><p style="white-space: normal;"><strong>版本:<span style="color: #FF0000;">MAYA2019</span></strong></p><p style="white-space: normal;"><strong>cython版本库:<span style="color: #FF0000;">Cython-0.29.24</span></strong></p><p style="white-space: normal;"><strong>pip:<span style="color: #FF0000;"> get-pip.py</span></strong></p><p style="white-space: normal;"><span style="color: #000000;"><strong><strong style="white-space: normal;">python版本:</strong></strong></span><strong><span style="color: #FF0000;"><strong style="white-space: normal;"></strong>Python27</span></strong></p><p style="white-space: normal;"><span style="color: #000000;"><strong><strong><strong style="white-space: normal;"><strong style="white-space: normal;">Visual Studio&nbsp;</strong>版本</strong></strong></strong></span><strong><span style="color: #FF0000;"><strong><strong style="white-space: normal;"></strong>:</strong><strong style="white-space: normal;"><span style="color: #FF0000;">Visual Studio 2015</span></strong></span></strong></p><p style="white-space: normal;"><strong style="white-space: normal;"><span style="color: #00323C; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen, Ubuntu, Cantarell, &quot;Fira Sans&quot;, &quot;Droid Sans&quot;, &quot;Helvetica Neue&quot;, sans-serif; font-size: 16px; background-color: #FFFFFF;"></span></strong></p><p>默认pip 是从国外服务器下载各种库的,如果不换国内源,是没法下载成功的。</p><p>直接用户目录下创建一个pip 文件夹,然后创建一个pip.ini文件,将下面内容复制进去保存即可。这是全局设置,不只是3ds Max- 环境中的pip ,还是maya 环境的Pip ,都是直接用这个源下载各种扩展库的。</p><p>本人设置如下图-使用清华源,下载速度非常快。</p><p style="white-space: normal;"><strong style="white-space: normal;"><span style="color: #00323C; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen, Ubuntu, Cantarell, &quot;Fira Sans&quot;, &quot;Droid Sans&quot;, &quot;Helvetica Neue&quot;, sans-serif; font-size: 16px; background-color: #FFFFFF;"><span style="color: #00323C; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen, Ubuntu, Cantarell, &quot;Fira Sans&quot;, &quot;Droid Sans&quot;, &quot;Helvetica Neue&quot;, sans-serif; font-size: 16px; background-color: #FFFFFF;"><img src="https://wangqiguang.work/zb_users/upload/2022/06/202206071654604748919305.png" alt="image.png"/></span></span></strong><br/></p><p style="white-space: normal;"><strong style="white-space: normal;">1.安装 pip</strong></p><p style="white-space: normal;">首先 Maya 要安装 pip&nbsp;</p><p style="white-space: normal;">一些基本的小包可以 Maya 可以用 pip 进行安装,如果带有 C 扩展的则需要自己编译,就像之前 安装Cython 那样。</p><p style="white-space: normal;">地址:&nbsp;https://bootstrap.pypa.io/get-pip.py</p><p style="white-space: normal;">下载好 get-pip.py&nbsp; &nbsp;</p><p style="white-space: normal;">打开 cmd 运行以下命令(mayapy 即你自己 Maya 的 Python 解释器)</p><p style="white-space: normal;"><img src="https://wangqiguang.work/zb_users/upload/2021/12/202112211640017930719099.png" alt="image.png"/></p><p style="white-space: normal;">等待执行完毕.</p><p style="white-space: normal;"><img src="https://wangqiguang.work/zb_users/upload/2021/12/202112211640062589397297.png" alt="image.png"/></p><p style="white-space: normal;"><strong>2.复制文件</strong></p><p style="white-space: normal;">拷贝include和lib文件:</p><p style="white-space: normal;">需要将Python官方的include文件夹拷贝到Maya的Python文件夹里</p><p style="white-space: normal;">C:/Python27/include —&gt; C:Program FilesAutodeskMaya2019Pythoninclude</p><p style="white-space: normal;">再将Python27libs文件夹拷贝到Maya2019Pythonlibs文件夹里</p><p style="white-space: normal;">C:Python27libs—&gt; C:Program FilesAutodeskMaya2019Pythonlibs</p><p style="white-space: normal;"><strong>3.安装Cython&nbsp;</strong></p><p style="white-space: normal;"><strong>下载<strong style="white-space: normal;">Cython</strong>包</strong></p><p style="white-space: normal;">cmd再执行如下行命令:</p><p style="white-space: normal;">&quot;C:/Program Files/Autodesk/Maya2019/bin/mayapy.exe&quot;&nbsp; 下载的cython路径/setup.py install</p><p style="white-space: normal;">就会安装Cython了,如果整个过程没有报错则表示安装完成了.</p><p style="white-space: normal;">等待编译完毕<br/></p><p style="white-space: normal;"><img src="https://wangqiguang.work/zb_users/upload/2021/12/202112211640062683331473.png" alt="image.png"/></p><p style="white-space: normal;">如下mayapy.exe命令可以测试下Cython能不能正常使用</p><p style="white-space: normal;"><img src="https://wangqiguang.work/zb_users/upload/2021/12/202112211640019346238795.png" alt="image.png"/></p><p style="white-space: normal;">这个Maya2019PythonLibsite-packages目录会看到多了个Cython文件夹</p><p style="white-space: normal;"><img src="https://wangqiguang.work/zb_users/upload/2021/12/202112211640018595788054.png" alt="image.png"/></p><p style="white-space: normal;">看来一切都是正常的。</p><p style="white-space: normal;"><strong>4.开始编译pyd</strong></p><p style="white-space: normal;">准备工作做完,就开始我们的编译pyd文件了,编译前需要个setup.py文件,也准备了个foo.py文件,我们就用这个foo.py文件来编译pyd。</p><p style="white-space: normal;">foo.py的内容很简单:</p><p style="white-space: normal;">def foo():</p><p style="white-space: normal;">&nbsp; &nbsp; print(&#39;Hello world&#39;)</p><p style="white-space: normal;">&nbsp; &nbsp; print(&#39;py to pyd&#39;)</p><p style="white-space: normal;">setup.py的内容:</p><p style="white-space: normal;">from distutils.core import setup</p><p style="white-space: normal;">from Cython.Build import cythonize</p><p style="white-space: normal;">setup(ext_modules = cythonize(&#39;foo.py&#39;))</p><p style="white-space: normal;">cythonize的py文件要和自己的py文件一致。</p><p style="white-space: normal;">我的foo.py和setup.py都放在了桌面,所以还是用cd命令切换到桌面然后执行下面这行命令,就能生成pyd了。</p><p style="white-space: normal;">&quot;C:/Program Files/Autodesk/Maya2019/bin/mayapy.exe&quot; setup.py build_ext --inplace</p><p style="white-space: normal;"><img src="https://wangqiguang.work/zb_users/upload/2021/12/202112211640020013851846.png" alt="image.png"/></p><p style="white-space: normal;"><span style="color: #C0504D; background-color: #FFFFFF;">提示注意:<span style="color: #C0504D; background-color: #FFFFFF;">error: Unable to find vcvarsall.bat</span></span></p><p style="white-space: normal;"><span style="color: #C0504D; background-color: #FFFFFF;"><img src="https://wangqiguang.work/zb_users/upload/2021/12/202112211640062850349993.png" alt="image.png" style="white-space: normal;"/></span></p><p style="white-space: normal;"><span style="color: #C0504D; background-color: #FFFFFF;">如果出现这个情况,说明你电脑缺少vcvarsall.bat ,需要安装VS2015,下图是安装VS2015的选项</span></p><p style="white-space: normal;"><img src="https://wangqiguang.work/zb_users/upload/2021/12/202112211640083056463485.png" alt="image.png"/></p><p style="white-space: normal;"><br/></p><p style="white-space: normal;"><strong>编译完</strong>之后会多个.c文件和build文件夹,我们只需要那个pyd就行了。<br/></p><p style="white-space: normal;"><img src="https://wangqiguang.work/zb_users/upload/2021/12/202112211640020025690918.png" alt="image.png"/></p><p style="white-space: normal;">然后我们测试下这个pyd能否在Maya里正常使用,</p><p style="white-space: normal;"><img src="https://wangqiguang.work/zb_users/upload/2021/12/202112211640020047372982.png" alt="image.png"/></p><p>到此整个编译过程就结束了,自己测试即使用Maya2019编译的pyd可以正常兼容到Maya2019;另外此编译方法未在Linux上测试,Linux编译的是.so文件了,不是这里的.pyd,后面如果在Linux上实现了,再另写文章。</p><p><span style="background-color: #FFFFFF; color: #C0504D;">注意:</span></p><p>如果py文件里带有__file__这种东西会报错的</p><p>另外大佬另一篇文章有提到 pyd 编译代码相关的坑点,上面<span style="color: #6A737D; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;Helvetica Neue&quot;, Lato, Roboto, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, sans-serif; background-color: rgba(73, 177, 245, 0.1);">&nbsp;</span>链接也有所提及的,非常受用&nbsp;</p><p>https://blog.l0v0.com/posts/1a24f2d2.html</p>

讯享网
小讯
上一篇 2025-05-26 16:32
下一篇 2025-06-06 19:57

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/192172.html