To start off, I have both Maya and Blender installed.
So, I needed a specific version of Python for a script in Blender so I had to install another version than what comes with Maya. After I did that I had to add an environment variable PythonPath with values for this new Python version. Otherwise Blender couldn’t find it.
Problem is, that once I did that, Maya wasn’t getting access to it’s Python. So I tried adding the folder path to C:…\Maya2019\bin, but there seems to be a conflict. I can’t have PythonPath pointing to different Python versions. 
So my solution is to add the environment variable for Python 2.6 whenever I need to run my script in Blender. Then delete the environment variable before starting Maya.
There has to be a solution to this problem…
Create a bat file for maya and blender and set the environment variable there. If you’re using linux or macos then create a bash script.
This is how you could do it for maya. You could do the same thing for blender or any other application.
@echo off
set PYTHONPATH=/some/random/path
"C:\Program Files\Autodesk\Maya%MAYA_VERSION%\bin\maya.exe" %*
1 Like
A lovely example of why env vars are the devil.
Two solid alternatives :
- just launch your apps from either a python script or a bat file as in @max_wiklund’s example, setting the environment you need right at launch time. That lets you run multiuple apps side by side with their own environments
- Each app’s startup script gets an explicit config step that will add files to its module search directoy –
site.addsitedir
is the easy route here. It can be as simple as a .pth
file (which is part of site) or it can be more dynamic…though simple is better. In Maya you can run a python snippet at startup with maya.exe -c 'python(\\"your python here\\")
1 Like
Ah.
And here I thought env vars was the greatest things since sliced bread. 
In alt. 2. Could you provide an example of what it would look like?
They are great if you build a launcher to maintain them for each app session. 
I too have a strong distaste for pipelines that rely heavily on windows system/user env vars.
1 Like
the bare minimum would just be something like
maya.exe -c "python(\"import site; site.addsitedir('path/to/my/stuff')\")"
Which would just make sure that `/path/to/mty/stuff’ was available inside that maya session. You could make an importable startup module or startup script in that location and then call it
maya.exe -c "python(\"import site; site.addsitedir('path/to/my/stuff'); import my_startup_mod\")"
or you could just execute a single file and then have that file do all the fancy stuff:
maya.exe -c "python(\"execfile('path/to/the/file.py')\")"
The only rough bit is the stupid string escapes
1 Like
@kiryha’s example points out something I left out – you can launch maya in a subprocess and use the native ability of subprocess to manipulate environments to set the vars.
1 Like
Hey. I’ve been away for so long. Forgot to thank you. Thanks. Time to look into it.
Sorry for the late reply. Thank you!
1 Like