Comments (51)
Hi Chris,
Do you have any updated information about this plugin support for 2019.3 ?
from mayacharm.
Not production ready yet, but I have had some success getting things working again. So here is a pre release for people to test and give feedback on. Its built against PyCharm 2020.3 and requires that version or greater to install and run.
https://github.com/cmcpasserby/MayaCharm/releases/tag/prerelease/v3.2.1-test.1
https://github.com/cmcpasserby/MayaCharm/releases/tag/prerelease/vv3.2.1-test.3
from mayacharm.
yeah hopefully will get the rest sorted out, it is something to do with the pydevd that is shipped with it. Including my own, or telling it to use the one from 2019.2 makes it work again. but distributing my own pydevd would be a pain since it does have some binary dependencies and is not pure python
from mayacharm.
Anything I (or anyone else here) can do to help get this update out the door?
from mayacharm.
I'm stuck in .2 land until "attach to process" works for Maya. Do people have a way for debugging Maya without the use of MayaCharm?
It's a bit tricky but I'll try my best to describe it. Works for other software too like Nuke/Katana/etc.
-
In
Settings/Preferences | Build, Execution, Deployment | Python Debugger
- Set the
Attach to Process
name filter tomaya.bin
- Tick
Attach to subprocess automatically while debugging
- Set the
-
Copy down your full, absolute path to
<PyCharm install root>/plugins/python-ce/helpers/pydev
which we'll call
PYDEV_PATH
from now -
In Maya script editor, run these lines
import sys sys.path.prepend("PYDEV_PATH") import pydevd_pycharm
-
Then paste in this line. You need to come back later on in a hurry to change and run it!
pydevd_pycharm.settrace(host='localhost', stderrToServer=True, stdoutToServer=True, port=NUMBER_IN_CONSOLE, suspend=False)
-
Go back to PyCharm, then
Run | Attach To Process
but read the next steps before clicking your Maya process! -
Once you click on your Maya process, quickly go into the debug console to check the output
-
You may have to scroll right quite a bit, but you're looking for the port number PyCharm has used that's unique to this instance of attaching to Maya
-
Go into Maya, replace
NUMBER_IN_CONSOLE
with that port number, run that line -
If you did it in time, PyCharm will have successfully attached to Maya. If you failed, you can just try again from
Run | Attach To Process
from mayacharm.
Any news about a 2020.* support ?
from mayacharm.
https://github.com/cmcpasserby/MayaCharm/releases/tag/prerelease/vv3.2.1-test.3
test version 3, fixes issues with executing files directly instead of importing
from mayacharm.
Thanks for spending your weekend on this Chris.
from mayacharm.
Keep up the good work Chris send me a message if needed.
from mayacharm.
Sorry its been a while since looking at this. So have not been able to make no progress in getting the Debugger in newer versions of PyCharm to work with Maya.
Question is do people feel its worth releasing A update to support versions greater than 2019.2 if those versions do not support debugging?
If i do this it would mean it would not be able to attach its debugger, but it still would be able to grab the Maya log, and still would be able to execute code in Maya via the command port. The other thing i would be able to do, is ensure PyCharm detects the proper python version of mayapy
as well.
from mayacharm.
Sorry its been a while since looking at this. So have not been able to make no progress in getting the Debugger in newer versions of PyCharm to work with Maya.
Question is do people feel its worth releasing A update to support versions greater than 2019.2 if those versions do not support debugging?
If i do this it would mean it would not be able to attach its debugger, but it still would be able to grab the Maya log, and still would be able to execute code in Maya via the command port. The other thing i would be able to do, is ensure PyCharm detects the proper python version of
mayapy
as well.
It'd be worth it for me. I don't often use the debugging, but it would be nice to be able to update my PyCharm and still use the other MayaCharm features. Thanks for your work on this.
from mayacharm.
I'm stuck in .2 land until "attach to process" works for Maya. Do people have a way for debugging Maya without the use of MayaCharm?
from mayacharm.
from mayacharm.
@defTechAndrew It looks like a lot about how pydevd works changed in 2019.3. looks like both the local debugger which i based the mayacharm attach from, and the remote one in 2019.3 do not work with maya. When ever i attach it only partially works but it makes Maya unstable and never hits breakpoints.
from mayacharm.
Oof, maybe it's time to switch over to VS.
from mayacharm.
yeah when i have time want to dig into it more, and might try some plugin builds against 2020.1 EAP to see if things have improved there. I am not exactly sure what changed with it either. like for example if i run something in mayapy
directly it can still attach a debugger just fine to it. But when trying to attach to a running Maya instance is where i hit problems.
from mayacharm.
If you can do an update of the plugin that still allows debugging in 2019.2, and disables it but doesn't claim incompatibility with 2019.3+, that would probably be useful.
Was MayaCharm able to do debugging with Maya on MacOS or Linux before this problem? Is it Windows-only breakage?
You said pydev is not pure Python - does it include C extensions, or libraries that use Microsoft C Runtime, and would PyCharm be providing anything like this that is specific for Python 2.7? The Python 2.7 inside Maya on Windows has been recompiled by Autodesk with a newer compiler than the ancient Visual Studio setup that the stock Python 2.7 distribution used. In theory, Python packages for use with Maya that have C extensions should be built with the same VS setup as Maya's Python, otherwise they use different versions of the C runtime, which can be a problem. Any chance this is now causing a problem?
from mayacharm.
i only have older Maya versions to test with, but i could test on macOS as well.
but yes it looks like i can upload multiple packages, limited to versions. so on the weekend i should be able to add a new package for 2019.3 that does not have debugger support, but has the rest of the features working for 2019.3.
from mayacharm.
from mayacharm.
So which versions of Maya do the various people in this issue have access to? I have only been able to test on a limited set of older versions of it, so would be curious what this issue looks like if i gave someone a copy of the plugin to test on a modern version.
I am starting to break off a branch for maintaining the old version of the plugin and support for <= 2019.2 versions that included debugger support. Then i will be pushing the 2019.3 stuff into main, even if that means i can not support the debugger in it yet.
from mayacharm.
Our versions of interest are 2016SP6 and 2020 with Windows 10 - I also have access to 2018 and 2019, although I don't know what service pack is installed for those offhand. I also have access to Maya 2020 on a Mac, although we don't use MacOS in production.
I haven't been using MayaCharm in production as much lately because of my Issue#44, but I could certainly fire up and test a version of the plugin for standalone attaching and debugging.
from mayacharm.
Do you know for sure that debugging breaks in 2019.3+ on platforms other than Windows? I assume if I try and install a 3.11+ .jar from disk in PyCharm 2019.3+ it won't work because of your recent versioning restriction. If I were to install a 3.10 MayaCharm .jar file from disk on MacOS though, I should be able to see if that is broken?
from mayacharm.
@YKdvd if you want to play around, i can make you a jar file that targets 2019.3 and greater and still has the debugger enabled. My tests have been on 2016 and Windows so it would be good to know if the issue is only Windows and or older versions of Maya, or effects other OS's. Will get a chance to make that up tomorrow.
from mayacharm.
If you don't know already, I wouldn't mind finding out if debugging is broken on MacOS as well as Windows. We also have a Linux machine with a GUI lying around, although I don't know if it is still in a condition to run Maya.
What's the basic theory of MayaCharm/PyDev debugging on Windows? Does it inject Python 2.7-specific DLLs or .pyd libraries into the Maya process, where C runtime version issues might crop up?
Were you able to reach out to the JetBrain forums or the PyDev maintainers?
from mayacharm.
@YKdvd I have not reached out yet, but yes it does look like it is injecting some dll's, or so's and dynlibs on the Linux and mac side of things. On the windows side of things you can see the entry point to this process at. It looks all the windows ones were compiled with VS 2014 for both 2019.3 and versions before it. But the code is very different between the 2.
<= 2019.2 versions
%LOCALAPPDATA%\JetBrains\Toolbox\apps\PyCharm-P\<channel>\<version>\helpers\pydev\pydevd_attach_to_process/attach_pydevd.py
>= 2019.3 versions
%LOCALAPPDATA%\JetBrains\Toolbox\apps\PyCharm-P\<channel>\<version>\plugins\python\helpers\pydev\pydevd_attach_to_process/attach_pydevd.py
Most of the code you can see in those locations can be found here as well.
https://github.com/fabioz/PyDev.Debugger/tree/master/pydevd_attach_to_process
But it does seem JetBrains did make some of there own modifications to it.
from mayacharm.
@YKdvd and anyone else interested. Here is a release that is installable on 2019.3, and can be used to test what versions and OS's the debugger does not work on.
https://github.com/cmcpasserby/MayaCharm/releases/tag/v.3.2.0-test.1
from mayacharm.
I downloaded the test 3.2.0 plugin and installed it - PyCharm 2019.3.4 on MacOS 10.14.6. I double-clicked Maya 2020 and set things up. MayaCharm Active SDK is:
/Applications/Autodesk/maya2020/Maya.app/Contents/bin/mayapy | 4435
The project interpreter is set to that mayapy 2020 as well, and I've run the code in Maya that opens up that port 4435. I can successfully do Run->Execute Document in Maya. But when I choose Run->Attach To Process..., the "Local Host" processes says "No processes to attach to". I tried launching Maya from a terminal prompt with the same result.
from mayacharm.
k, i will have to get a proper mac dev environment setup to figure that out. In the mean time does running
readlink /proc/<maya pid>/exe
or
which ps -o `comm= -p <maya pid>`
where the is the PID of a running Maya instance give you its executable path?
from mayacharm.
I don't think MacOS has a procfs, and your "which" command doesn't seem to be valid syntax on MacOS. But given a Maya PID of 98105, here's some ps output for it.
ps -p 98105 -f
UID PID PPID C STIME TTY TIME CMD
501 98105 1 0 12:02pm ?? 0:23.14 /Applications/Autodesk/maya2020/Maya.app/Contents/MacOS/Maya
Are you generating and scanning a list of processes using something like ps?
from mayacharm.
kind of, the Intellij platform has a method for getting info about processes to attach to. but it lacks some of the information i need. So i had to build some methods that take a PID and get me the executable path with it. So on windows i am using wmic for that, on Linux the procfs, then on mac i will need to find a way. After work tonight i will have more time to look at that, and get macOS setup for testing this.
from mayacharm.
from mayacharm.
@cmcpasserby I have access to just about every version of Maya 2013 -2019 and will have 2020. Let me know if you anything tested.
from mayacharm.
@chadlichty will take note of that, hoping to try a few more things out on Saturday and see if progress can be made
from mayacharm.
Can I get you a coffee or lunch for your efforts?
from mayacharm.
Are there any plans to upgrade the plugin to PyCharm 2020.3? or any of the 2020 versions? I see the last time the developer posted here was 10 months ago...
from mayacharm.
Maybe someday but currently i very much lack the time to fix it, nor do i want to spend money to get what i would need to do any serious work on it again.
from mayacharm.
I see, I'm currently considering MayaCharm + PyCharm for a job I'm applying to. Would probably know around late March if I get the job, but if I do, I'd willing to donate to this project. Hopefully others would want to donate too, so if you are able to do it in the near future, maybe setting up some kind of kickstarter or donation page could take care of the monetary expenses to fix it, and compensate you for your time as well.
from mayacharm.
from mayacharm.
Telling PyCharm that to look for the string "maya" in processes, I can "Attach to Process..." to a running Maya on Windows, and the Pycharm debugger Console shows the output of "print()" commands done in the Maya Script Editor window, and the PyCharm debugger says it is connected. So the basic attachment works, it is just that breakpoints don't?
BTW, here's a JetBrains issue that Chris posted to:
https://youtrack.jetbrains.com/issue/PY-44778
and another one with the actual breakpoint issue:
https://youtrack.jetbrains.com/issue/PY-43545
Doesn't seem like JetBrains is interested in helping figure this out.
from mayacharm.
@YKdvd From what i can tell, the way code is injected to do the 2nd half of the attach is bugged in the pydevd version that 2019.3 and above use. so it will say it attaches, and will be partially connected since you can see maya log output in the debugger window. But breakpoints do not get hit. During my own debugging i have managed to get things to connect properly, but think its a good bit of work to get from that to making that reliable again.
JetBrains i would say is only giving limited to little support since its a hard problem to reproduce unless you already own a expensive product to test against.
from mayacharm.
I've tested this now and I can't get the debugging to work. Unsure if problem is on my end or not.
Maya 2020.2 - PyCharm 2020.3 - MayaCharm pre-release. I installed your pre-release by copying the MayaCharm folder to the PyCharm plugins folder.
Installation appears to have gone thru fine. MayaCharm pops up in project settings/plugins and under run configs.
Connection can be made to Maya and I am able to Attach to the Maya process.
However no debug functionality seems to be there. I set a bunch of breakpoints in the init of a class, and then I runt a test-script which creates an object of said class.
Breakpoints are ignored and the debug-"ladybug" -icon is greyed out - including every debug action under Run > Debugging action.
Also: output from Maya is not redirected back to PyCharm. MayaLog remains empty: but script editor shows my object was created successfully. Python console shows no errors and neither does the debug tab.
I would like to say that I have missed MayaCharm tremendously. I've never managed to get the ordinary PyCharm debugger to work, always had problem with Maya not finding the pycharm-pydevd module so I've had to do print-debugging for like a year now. To be honest with you: It makes me feel like a retarded Junior Developer. I really hope I can get back to using this debugger. Thanks for all the hard work!
from mayacharm.
@MartinPolygonflow did not know you can just copy it to the folder,
I normally install via Settings > Plugins
windows then in the cog icon you can select Install Plugin from Disk
.
So forgot to mention it in the above post but this version relies much more heavily on the commandPort then previous ones, and the logic to create the command port has changed slightly. In the Settings > MayaCharm
menu, you should see a list of your mayapy's and port numbers. if yours is not there just add it. If you double click on the entry you are trying to target you should get a window like.
so just make sure that code it provides in that window has been run in maya at least once. i generally just add it to the userSetup.py
in Maya's scripts folder
if that does not do it, it could be how you are running you code, if you are just executing a file, sometimes that causes issues, but you you are importing your module then running a function from it, i find that is more reliable.
Also I have only tested any of this on Windows so far and a fairly old maya version.
from mayacharm.
I wasn't sure you can do that either but apparently PyCharm will look into subfolders in the Plugins folder, and there it found the MayaCharm jar file.
Anyway, I removed everything and installed it in the way you recommended (from disk).
I noticed two things:
- First there was a warning from PyCharm saying that the plugin is incompatible with this version of PyCharm (build something - don't remember the number). But after restarting the IDE the warning is gone and MayaCharm shows up. I was unable to reproduce this error. Again: I am running 2020.3 - the latest version.
- There is no code view for the command port:
However I wrote down the command port connection logic from your image and added it to my userSetup.
Unfortunately I get precisely the same problem as before:
All debugger options are greyed out. I can run my script via the MayaCharm runner but the whole code executes, ignoring breakpoints. And no console output is directed back to PyCharm.
This is my version of PyCharm:
I'm wondering if perhaps I am doing something wrong on my end. What is your workflow for getting the debugger actions enabled? For me it's all just greyed out. Do these appear for you after you've attached to the Maya process?
(This is Nightshade from tech-artists.org btw!)
from mayacharm.
@MartinPolygonflow
So looks like Maya is either not receiving the SetTrace call or it hitting a error trying to run it. On a successful connect in the debugger console, you will see successfully attached to maya
underneath the really long line that runs the custom attach_pydev script.
The debugger run config is disabled at this time, since i could not find a way make the timing of connecting the debugger and then executing the script reliable. So the current workflow is run > attach to process...
then you can either run the code from maya or use the run config to start your script. There is a other bug i need to sort out, where if you execute a file it will not hit break points. But if you just import a module and run a function on it it should still work.
The connection text not displaying properly I just fixed, was a simple mistake when built to a jar file it did not know how to path to the file correctly.
In the connection command you can see in debugging console, can you check the path of the script it is trying to run as well as the, and path after --pydevPath
and ensure they are both point to valid locations
from mayacharm.
This version looks promising. However, I get a strange behavior when using the __file__
variable, it returns CommandPort.py
, shouldn't it be empty as in the previous versions? or return the launched document?
from mayacharm.
Another thing I noticed during my tests: if the code fails or an exception is thrown, nothing is printed in the MayaLog nor in the ScriptEditor, it just crashes silently
from mayacharm.
will look into the __file__
thing not sure why that would have changed, might be due to me passing globals()
from my code sent to the CommandPort into the execfile call that executes your script. had to do this to solve some problems with stuff in wrapped in if __name__ == "__main__":
blocks not getting executed. Way more stuff needs to use the commandPort in this version than before, since injecting code directly into things is no longer reliable.
@mathbou thanks for the feedback, likely will not have time to look again till the weekend.
from mayacharm.
@mathbou still no time to do enough testing for a proper release, but this might fix the 2 issues you were talking about.
https://github.com/cmcpasserby/MayaCharm/releases/tag/v.3.2.1-test.4
it does require the command port setup be changed back and reverted to the old way
from mayacharm.
v3.2.1 is released and on the marketplace now so am closing this issue
https://plugins.jetbrains.com/plugin/8218-mayacharm
from mayacharm.
from mayacharm.
@chadlichty might be better to start a new topic but will need some more information then that. how are you executing the script, where the script lives, and what you got for output when you attached.
from mayacharm.
Related Issues (20)
- mayaCharm-2019.3_support Fail to load plugin descriptor HOT 2
- Exception happens after code execution HOT 3
- 2020.1 Support HOT 3
- PyCharm Professional required? HOT 3
- Debugging Maya userSetup.py at startup? HOT 2
- MayaCharm runner not found HOT 1
- Not working with PyCharm 2020.2.1 HOT 1
- Debugger timing out on Attach to Process...Mac OS HOT 1
- Breakpoints are not working when connected to maya PyCharm 2020.3 HOT 21
- MayaCharm connect but breakpoints are not caught by the debugger. HOT 17
- Maya2022 and mayapy/Python 3 - attach_pydevd.send_command HOT 10
- suppress in Mayalog
- Update plugin for PyCharm 2021.2 release. HOT 5
- Info and Debug messages from the logger don't show up
- Unsupported on >2021.3 HOT 1
- How to debug?
- Don't support python file with Chinese characters. HOT 3
- It seems that UTF-8 is not supported when using Python 3. HOT 8
- MayaCharm 3.2.7 使用时发生错误! HOT 7
- 'utf-8' codec can't decode byte 0xbc HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mayacharm.