当前位置: 首页 > news >正文

vscode用python开发maya联动调试设置

 如何在VScode里编写Maya Python脚本_哔哩哔哩_bilibili1

 包括1,maya的python全面在vscode支持,2,通过mayacode发送到maya,3同步调试

import maya.cmds as cmds 

1、让 maya.cmds编译通过

下载Autodesk_Maya_2018_6_Update_DEVKIT_Windows.zip,或者其他以上版本Maya API | Autodesk Platform Services (APS),将“devkit”、“mkspecs”两个文件夹,放在maya安装根目录;

vscode1.98.2 配置:

的首选项>设置>扩展>json>json.schemas 讲架构关联到当前项目中的json文件>在settings.json中编辑,合并代码

{"editor.gotoLocation.multipleTypeDefinitions": "goto","editor.gotoLocation.multipleDefinitions": "goto","editor.mouseWheelZoom": true,"files.associations": {"*.jsx": "javascriptreact"},"python.analysis.extraPaths": ["D:/Program Files/Autodesk/Maya2018/devkit/other/pymel/extras/completion/py"],"json.schemas": []
}

Pycharm2018配置:
        project: mypycharm>project structure>
        D:\Autodesk\maya2018\scripts

新建项目:命名为  xm;
----------创建解释器:
---------------File --Settings --Project :xm(项目名)--Project  Interpreter --点击右侧“齿轮图标”-- 选择“Add”--“弹出新窗口” ;
---------------在“弹出的新窗口”选择“Existing environment”;在“Interpreter:”右侧,选择maya的Python解释器(D:\Autodesk\maya2018\bin\mayapy.exe);保存;
在 MAYA_APP_DIR 下的文件夹 scripts 或者 (maya版本)\scripts  下的 userSetup.py 和 userSetup.mel 都会在 Maya 的启动过程(startup)中被自动执行

设置maya的端口重复启覆盖设置模式。

Users\xxx\Documents\maya\2018\zh_CN\scripts\userSetup.mel  没有就创建它

commandPort -eao -n "localhost:7001" -stp "mel";

启动maya

1、MAYA2018中运行mel命令行

启动监听端口

commandPort -name "localhost:7001" -sourceType "mel" -echoOutput;

 (如果要取消监听端口),

commandPort -cl -name "localhost:7001";

用vscode新建一个py文件,内容为

import maya.cmds as cmds
cmds.polySphere(name="sphere1", radius=5)

2、安装Mayacode插件 for vscode:

安装完点右键:send python code to maya shift +alt+M

一般到这里,就可以了!可以直接vscode发送程序到maya执行!

但是为了更爽的功能! Maya 2018 安装单步调试工具!继续看!>>

指定目录,创建工作区

代码的工作区目录创建.vscode目录,里面创建一个launch.json文件,填入代码 


{"version": "0.2.0","configurations": [{"type": "python","request": "attach","name": "Maya Python Debugger : Remote Attach","port": 5678,"host": "localhost","pathMappings": [{"localRoot": "${fileDirname}","remoteRoot": "${fileDirname}"}],"MayaDebugFile": "${file}"}]
}

出现如下问题,请安装 ptvsd 调试库

connect Econnerfused 127.0.0.1:5678

1.在 Maya 的 Script Editor 中执行以下 Python 代码(需先安装 ptvsd 调试库):

(在dos命令下通过maya的 bin目录的mayapy.exe 来安装 pip ,再通过pip安装调试程序ptvsd,或者代替方案 debugpy)

 1、进入maya的bin目录,地址栏敲入cmd,进入dos命令
x:\Program Files\Autodesk\Maya2018\bin>

2、运行mayapy安装pip

x:\Program Files\Autodesk\Maya2018\bin>  mayapy.exe -m ensurepip --user

提示成功安装pip,

Ignoring indexes: https://pypi.python.org/simple
Collecting setuptools
Collecting pip
Installing collected packages: setuptools, pip
Successfully installed pip setuptools

再通过pip安装ptvsd

x:\Program Files\Autodesk\Maya2018\bin>mayapy.exe -m pip install --user ptvsd==4.3.2 Collecting ptvsd==4.3.2

Could not find a version that satisfies the requirement ptvsd==4.3.2 (from versions: ) No matching distribution found for ptvsd==4.3.2

#使用Python Package Index (PyPI) 的历史版本索引来安装 ptvsd 4.3.2:
"D:\Program Files\Autodesk\Maya2018\bin\mayapy.exe" -m pip install --user -i https://pypi.python.org/simple/ ptvsd==4.3.2
#如果仍然失败,可以尝试清华大学镜像源
"D:\Program Files\Autodesk\Maya2018\bin\mayapy.exe" -m pip install --user -i https://pypi.tuna.tsinghua.edu.cn/simple/ ptvsd==4.3.2

 如果还是不行,则手动下载并安装 whl 包

在支持 Python 2.7 的环境中,使用以下命令下载 ptvsd 4.3.2 的 whl 包:

pip download ptvsd==4.3.2 -d "D:\temp" --python-version 27 --only-binary=:all:

x:\Program Files\Autodesk\Maya2018\bin> mayapy.exe -m pip install --user "D:\temp\ptvsd-4.3.2-cp27-none-any.whl"

实在不行就用替代方案 :使用 debugpy
(如果 ptvsd 安装始终失败,可以尝试使用 Python 2.7 兼容的 debugpy)

"D:\Program Files\Autodesk\Maya2018\bin\mayapy.exe" -m pip install --user debugpy==1.0.0b1
import debugpy
debugpy.listen(('localhost', 5678))
debugpy.wait_for_client()

  # 启动调试服务器

ok后,在 Maya 的 Script Editor 中执行测试!:

import ptvsd
print(ptvsd.__version__)  # 应输出 4.3.2

 

 maya中mel运行 :导入ptvsd 设置端口5678

import ptvsd
ptvsd.enable_attach(address=('localhost', 5678))
ptvsd.wait_for_attach()  # 可选:等待VSCode连接后再继续执行

 看!有等待ptvsd.wait_for_attach()了!

最后运行单步调试的debug ,看右上角,有工具条了!

 再提下搜索区的右边,一个猴头,是ai编程。但是速度慢的可以!

 

 另外附带一套,端口占用查看方法:

 2. 验证端口是否开放

在 Maya 中检查

# 检查端口是否已绑定
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
s.bind(('localhost', 5678))
print ("端口 5678 未被占用,可以使用")
except socket.error as e:
print (f"端口 5678 已被占用: {e}")
finally:
s.close ()

 作用:查找占用特定端口(如 5678)的进程

netstat -ano | findstr 5678

反馈展示 ,带listening的表示有独占的,后面12345是pid码,

TCP    0.0.0.0:5678           0.0.0.0:0              LISTENING       12345

 再根据pid查进程名称

tasklist | findstr 12345

输出 反馈展示,表示maya启动了5678端口

maya.exe                     12345 Console                    1    1,234,568 K

    相关文章:

  • Redis 数据类型与操作完全指南
  • 开源语音-文本基础模型和全双工语音对话框架 Moshi 介绍
  • 【Redis】List 列表
  • 谈谈未来iOS越狱或巨魔是否会消失
  • Redis的Hot Key自动发现与处理方案?Redis大Key(Big Key)的优化策略?Redis内存碎片率高的原因及解决方案?
  • 计算机网络(1)——概述
  • Redis——缓存雪崩、击穿、穿透
  • WSL 安装 Debian 12 后,如何安装图形界面 X11 ?
  • 手撕四种常用设计模式(工厂,策略,代理,单例)
  • sudo apt update是什么意思呢?
  • STM32F10xx 参考手册
  • 从零开始理解Jetty:轻量级Java服务器的入门指南
  • JavaScript入门【2】语法基础
  • MATLAB学习笔记(六):MATLAB数学建模
  • Redis Sentinel如何实现高可用?
  • 机器学习——逻辑回归
  • C/C++之内存管理
  • 网络编程中的直接内存与零拷贝
  • 强化学习赋能医疗大模型:构建闭环检索-反馈-优化系统提升推理能力
  • chrome 浏览器插件 myTools, 日常小工具。
  • 机器人为啥热衷“搞体育”,经济日报:是向加速融入日常生活发起的冲锋
  • 俄媒:俄乌伊斯坦布尔谈判将于北京时间今天17时30分开始
  • 泰山、华海、中路等山东险企综合成本率均超100%,承保业务均亏损
  • 人民日报:从“轻微免罚”看涉企执法方式转变
  • 光明日报:家长孩子共同“息屏”,也要保证高质量陪伴
  • 哪种“网红减肥法”比较靠谱?医学专家和运动专家共同解答