Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

>= 2019.3 Support #43

Closed
4 tasks done
cmcpasserby opened this issue Dec 8, 2019 · 51 comments
Closed
4 tasks done

>= 2019.3 Support #43

cmcpasserby opened this issue Dec 8, 2019 · 51 comments
Assignees
Labels
Milestone

Comments

@cmcpasserby
Copy link
Owner

cmcpasserby commented Dec 8, 2019

So 2019.3 has brought lots of issues with how pydev works

  • Upgrade Project to Gradle and the new project structure required for Intellij Platform plugins
  • Get PyCharm detecting the correct version of python for mayapy
  • Deal with deprecations and prepare for 2020.1
  • Sort out differences with the new version of pydev included in PyCharm >= 2019.3

Update: 2021-02-15

some progress has finally been made, and i got a prerelease version for testing
https://github.com/cmcpasserby/MayaCharm/releases/tag/prerelease/vv3.2.1-test.3

Update: 2021-03-17

Issue resolved, and working versions are available in the plugin marketplace and on the releases page.

@defTechAndrew
Copy link

Thanks for spending your weekend on this Chris.

@cmcpasserby
Copy link
Owner Author

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

@MTCoster
Copy link

Anything I (or anyone else here) can do to help get this update out the door?

@PadraigOCuinn
Copy link

Keep up the good work Chris send me a message if needed.

@zZnghialamZz
Copy link

Hi Chris,

Do you have any updated information about this plugin support for 2019.3 ?

@cmcpasserby
Copy link
Owner Author

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.

@joe-sunblink
Copy link

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.

@defTechAndrew
Copy link

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?

@chadlichty
Copy link

chadlichty commented Apr 2, 2020 via email

@cmcpasserby
Copy link
Owner Author

@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.

@defTechAndrew
Copy link

Oof, maybe it's time to switch over to VS.

@cmcpasserby
Copy link
Owner Author

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.

@j0yu
Copy link
Collaborator

j0yu commented Apr 2, 2020

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.

  1. In Settings/Preferences | Build, Execution, Deployment | Python Debugger

    • Set the Attach to Process name filter to maya.bin
    • Tick Attach to subprocess automatically while debugging
  2. Copy down your full, absolute path to

    <PyCharm install root>/plugins/python-ce/helpers/pydev
    

    which we'll call PYDEV_PATH from now

  3. In Maya script editor, run these lines

    import sys
    sys.path.prepend("PYDEV_PATH")
    import pydevd_pycharm
  4. 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)
  5. Go back to PyCharm, then Run | Attach To Process but read the next steps before clicking your Maya process!

  6. Once you click on your Maya process, quickly go into the debug console to check the output

  7. 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

  8. Go into Maya, replace NUMBER_IN_CONSOLE with that port number, run that line

  9. 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

@YKdvd
Copy link

YKdvd commented Apr 2, 2020

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?

@cmcpasserby
Copy link
Owner Author

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.

@PadraigOCuinn
Copy link

PadraigOCuinn commented Apr 2, 2020 via email

@cmcpasserby
Copy link
Owner Author

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.

@YKdvd
Copy link

YKdvd commented Apr 5, 2020

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.

@YKdvd
Copy link

YKdvd commented Apr 6, 2020

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?

@cmcpasserby
Copy link
Owner Author

cmcpasserby commented Apr 6, 2020

@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.

@YKdvd
Copy link

YKdvd commented Apr 6, 2020

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?

@cmcpasserby
Copy link
Owner Author

cmcpasserby commented Apr 6, 2020

@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.

@cmcpasserby
Copy link
Owner Author

@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

@YKdvd
Copy link

YKdvd commented Apr 6, 2020

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.

@cmcpasserby
Copy link
Owner Author

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?

@PadraigOCuinn
Copy link

PadraigOCuinn commented Apr 12, 2020 via email

@chadlichty
Copy link

@cmcpasserby I have access to just about every version of Maya 2013 -2019 and will have 2020. Let me know if you anything tested.

@cmcpasserby
Copy link
Owner Author

@chadlichty will take note of that, hoping to try a few more things out on Saturday and see if progress can be made

@chadlichty
Copy link

Can I get you a coffee or lunch for your efforts?

@mathbou
Copy link

mathbou commented Feb 1, 2021

Any news about a 2020.* support ?

@guitarjorge24
Copy link

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...

@cmcpasserby
Copy link
Owner Author

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.

@guitarjorge24
Copy link

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.

@chadlichty
Copy link

chadlichty commented Feb 3, 2021 via email

@YKdvd
Copy link

YKdvd commented Feb 3, 2021

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.

@cmcpasserby
Copy link
Owner Author

@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.

@cmcpasserby
Copy link
Owner Author

cmcpasserby commented Feb 13, 2021

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

@MartinPolygonflow
Copy link

MartinPolygonflow commented Feb 14, 2021

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!

@cmcpasserby
Copy link
Owner Author

cmcpasserby commented Feb 14, 2021

@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.
edit_port_number
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.

@MartinPolygonflow
Copy link

MartinPolygonflow commented Feb 15, 2021

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:

  1. 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.
  2. There is no code view for the command port:
    no code view
    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.

image

This is my version of PyCharm:
pycharm version

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!)

@cmcpasserby
Copy link
Owner Author

@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

@cmcpasserby
Copy link
Owner Author

cmcpasserby commented Feb 15, 2021

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

@cmcpasserby cmcpasserby added this to the v3.2.x milestone Feb 15, 2021
@mathbou
Copy link

mathbou commented Feb 27, 2021

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?

@mathbou
Copy link

mathbou commented Feb 28, 2021

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

@cmcpasserby
Copy link
Owner Author

cmcpasserby commented Mar 1, 2021

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.

@cmcpasserby
Copy link
Owner Author

cmcpasserby commented Mar 7, 2021

@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

@cmcpasserby
Copy link
Owner Author

v3.2.1 is released and on the marketplace now so am closing this issue
https://plugins.jetbrains.com/plugin/8218-mayacharm

@chadlichty
Copy link

chadlichty commented Mar 15, 2021 via email

@cmcpasserby
Copy link
Owner Author

@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.

@cmcpasserby cmcpasserby unpinned this issue Mar 18, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests