I am trying to download and install setup_tools, easy_install and tinydb all from within mayas python interpreter..
I'm pretty close, but it looks like the system command to run ez-setup.py is not downloading the easy_install packages to mayas site_packages directory, which is strange because the same command works perfectly in the shell..
So the system call reads like this: /Applications/Autodesk/maya2016/Maya.app/Contents/bin/mayapy /Users/paxtongerrish/downloads/ez_setup.py
I am pointing mayas python interpreter at ez_setup.py
When i punch this command into the shell, it downloads setup_tools to mayas python site_packages directory... Great! :D
However.. I need to have this all happen from inside mayas python interpreter and it does not work when called from os.system or subprocess.call
Any help super appreciated..
thanks!
import os
import sys
import urllib2
import subprocess
setup_tools_address = 'https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py'
downloads_directory = '%s/downloads' % os.getenv('HOME')
if not os.path.exists(downloads_directory):
os.makedirs(downloads_directory)
def setup():
url = setup_tools_address
file_path = '%s/%s' % (downloads_directory, url.split('/')[-1])
maya_py = maya_py_path()
for p in download_url(url, file_path):
print p
system_command = '%s %s' % (maya_py, file_path)
print '----- sys command--- (only works in shell)------\n'
print system_command
print '\n----------------------------------------------\n'
#This system command works from shell, but not from python.... Maybe superuser thing??
#os.system(system_command)
#sub process doesnt work either
p = subprocess.Popen(system_command, shell=True, stdout=subprocess.PIPE)
for i in p.stdout.readline():
sys.stdout.flush()
print i
add_eggs()
from setuptools.command import easy_install
easy_install.main(['tinydb'])
add_eggs()
import tinydb
def download_url(url, file_path, block_size=2056):
request = urllib2.urlopen(url)
file_size = int(request.info()['Content-Length'])
if not file_path:
file_path = '%s/%s' % (os.getenv('HOME'), url.split("/")[-1])
downloaded_chunk = 0
with open(file_path, "wb") as f:
while downloaded_chunk < file_size:
chunk = request.read(block_size)
downloaded_chunk += len(chunk)
f.write(chunk)
progress = float(downloaded_chunk) / file_size * 100
yield progress
print("\nDownload Complete.")
def maya_app_path():
appName = 'Maya'
if sys.platform == 'win32':
appName = 'Maya.exe'
for p in sys.path:
app_path = '%s/%s' % (p.replace('\\','/') , appName)
if os.path.exists(app_path):
return app_path
def maya_py_path():
file_name = 'mayapy'
if sys.platform == 'win32':
file_name = 'mayapy.exe'
return '%s\\%s' % (os.path.dirname(maya_app_path().replace('/','\\')), file_name.replace('/','\\'))
return '%s/bin/%s' % (os.path.dirname(os.path.dirname(maya_app_path())), file_name)
def get_site_packages_directory():
for p in sys.path:
if p.endswith('site-packages'):
return p
def add_eggs():
site_packages_directory = get_site_packages_directory()
for item in os.listdir(site_packages_directory):
if item.endswith('.egg'):
sys.path.append('%s/%s' % (site_packages_directory, item))
Whatever you do from the system Python, simply do it from mayapy. There should be a binary within your Maya installation directory called that, at least that’s how it is on Windows and Linux; I’m not sure about OSX.
For example.
# From OS Python
$ python my_script.py
# From Mayapy
$ /dir/to/mayapy my_script.py
--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/d3ff77b4-2cad-4f2f-b9a7-ad23be2fd604%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/CAFRtmOBj_hBHj3b4zgiY2Shfxr8g_K1%2BKvBNdbkzKSkAsd_NBQ%40mail.gmail.com.
downloaders = (
#download_file_powershell,
#download_file_curl,
#download_file_wget,
download_file_insecure,
)
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsub...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/d3ff77b4-2cad-4f2f-b9a7-ad23be2fd604%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
----
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsub...@googlegroups.com.
To be honest, I really don't feel anything should get installed into Maya's internal site-packages. It should be another path that is added to Maya's PYTHONPATH, or maybe a Maya module, I which case you could write to your module location maybe? Maya at least puts modules onto its PYTHONPATH if I remember correctly.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/d3ff77b4-2cad-4f2f-b9a7-ad23be2fd604%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/CAFRtmOBj_hBHj3b4zgiY2Shfxr8g_K1%2BKvBNdbkzKSkAsd_NBQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/f9529258-9f99-4e3c-988d-459950103c9b%40googlegroups.com.
So, what about Maya modules, which are meant to be distributed packages of code?
Another option, what about distributing your tools with vendored dependencies bundled in? What if a given studio doesn't have an internet connection on the same machines as their production workstations?
--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/c8b74747-78c2-49df-bf4a-b684db90fa5d%40googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/CAPGFgA2ssHVnz2%3DJ5jEzFGP6mMhoDcS%2BTs_yfUhh_ar7SSPjqQ%40mail.gmail.com.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsub...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/c8b74747-78c2-49df-bf4a-b684db90fa5d%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsub...@googlegroups.com.
I’ve also built my own local versions of Python that match maya’s python build environment, at least on windows. So I’ve got copies of 2.7 build against VS2010 (Maya2014), and VS2012 (Maya2015/6). This has helped me when compiling extension modules for python such as the P4API and PySide/PyQt ect…
I’m curious, how come you compiled your own Python here, and didn’t use mayapy? I’ve compiled packages with it before and can’t recall having any issues with it.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/c8b74747-78c2-49df-bf4a-b684db90fa5d%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/CAPGFgA2ssHVnz2%3DJ5jEzFGP6mMhoDcS%2BTs_yfUhh_ar7SSPjqQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/e03977f9-db99-4b2b-accb-7f511cd7d3b3%40googlegroups.com.To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsub...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/c8b74747-78c2-49df-bf4a-b684db90fa5d%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsub...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/CAPGFgA2ssHVnz2%3DJ5jEzFGP6mMhoDcS%2BTs_yfUhh_ar7SSPjqQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsub...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/e03977f9-db99-4b2b-accb-7f511cd7d3b3%40googlegroups.com.
command = [get_maya_py_path(), ez_setup.__file__,'--to-dir', extensions_directory]
p = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/dfdf2b10-5412-4269-b348-cd2e8b93afb5%40googlegroups.com.To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.
With pip
there is --target
which installs to a given location. Not sure if there’s an equivalent for ez_install.
ps. Not sure why your sending so many duplicate emails, but they each seem slightly different than the last. Perhaps you are attempting to edit a post on Google Groups? Just a heads up that that won’t work with a mailing list as each reply get’s send to everyone who’s subscribed immediately.
Marcus,
Right. but what i'm saying is that I am specifying a non-system directory C:\Users\USER\MyScripts\MYPACKAGE\extensions with '--to-dir'
but it still errors out saying i cant write to C:\Program Files\Autodesk\MAYAVERSION\Python\Lib\site-packageseven though i have specified a different directory...it seems to use the directory specified to download the zip archive, but then it procedes to install to site-pacckages anyway.Is there a better way of pointing ez_install to a specific directory?
Fredrik, to answer your question
"Is there a reason why you wouldn't want to go down such a route?"I am, perhaps foolheartedly trying to build packages that can download their own latest versions as well as dependencies.
On Wednesday, 20 January 2016 13:05:08 UTC-8, Paxton wrote:
--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/0681ca22-d1e5-42dc-83f0-a7aa4ea4e2c3%40googlegroups.com.
You received this message because you are subscribed to a topic in the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/python_inside_maya/ZAqqRUI7Q4w/unsubscribe.
To unsubscribe from this group and all its topics, send an email to python_inside_m...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/CAFRtmOBhS%2BqXuPSr4VXeNSejFdBGBikmfKZ%3DnfCjQDK6180%3D8A%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.