really good docs, agree 100 % just a little clarification, if you ask me if I prefer import maya.cmds as cmds instead from maya import cmds
I prefer the second one...I'm agree that cmds it's pretty common name, and could be confusing but we are using cmds with the first example as well. in general with name as cmds, core, or similarly a prefer to use the full "path": import maya.cmds import pymel.core it's more easy when I'll go to read back my code after months/years or when I read the code write form someothers. ( of corse it there are the only library imported I can understand to use core, cmds...) ps: for the api i still use from maya import OpenMaya, because I find OpenMaya pretty clear ;) -------------------------------- Marco D'Ambros phone : (+61) (0) 435809628 web : www.marcodambros.com mail : [email protected] On Thu, Oct 4, 2012 at 12:48 AM, Python inside Maya <[email protected]>wrote: > I see, so the main justification is name space clashing. > Thanks Serguei > > > On Wednesday, October 3, 2012 1:00:12 AM UTC-7, [email protected]: > >> The rule of thumb with Python imports is to avoid name clashes. This is >> why you sometimes see people advise against *from import* style. >> This is especially true if your modules are too generic (which cmds >> certainly is). >> >> In general stay away from *from import ** unless the API you are using >> explicitly says it's ok to do so (ex. TkInter). >> Another exception is if you have a specific purpose for doing so, like >> setting up a settings scheme using python files (ex. Django). >> >> So your choice often depends on what libraries you're working with, where >> and how you expect your code to be used and finally personal preference. >> >> I think this sums it up pretty well: >> >>> *Use import x for importing packages and modules. >>> Use from x import y where x is the package prefix and y is the module >>> name with no prefix. >>> Use from x import y as z if two modules named y are to be imported or >>> if y is an inconveniently long name. >>> Do not use relative names in imports. Even if the module is in the same >>> package, use the full package name. This helps prevent unintentionally >>> importing a package twice.* >> >> >> >> >> On Tue, Oct 2, 2012 at 11:47 PM, Paul Molodowitch <[email protected]> >> wrote: >> > Hmm... if it's a deep hierarchy, i generally prefer >> > >> > import my.module.hierararchy.**wantedModule as wantedModule >> > >> > ...as opposed to having to use the full hierarchy all the time. It's >> still >> > easily discoverable where it came from, you can still do easy >> search/replace >> > if needed, etc. >> > >> > As for >> > >> > from maya import cmds >> > >> > vs >> > >> > import maya.cmds as cmds >> > >> > ... I tend to prefer the second, because it makes it clear that >> maya.cmds is >> > a module. Ie, if you do: >> > >> > from maya import cmds >> > >> > ...cmds could be anything - a function, a dictionary, a module, etc. It >> > also has the added bonus that if you ever want to do text searches >> through >> > your code base, you still have the whole module name in one piece - ie, >> it >> > will be found if you just search for "maya.cmds". (Of course, if you >> want >> > to be certain you found all uses of a given module, you need to search >> for >> > both forms... but still, I find it nice.) >> > >> > Just my 2 cents... >> > >> > - Paul >> > >> > >> > On Tue, Oct 2, 2012 at 11:16 PM, Marco D'Ambros <[email protected]> >> >> > wrote: >> >> >> >> I'm for the second one >> >> from maya import cmds >> >> >> >> I don;t see the point to use >> >> import maya.cmds as cmds >> >> >> >> ------------------------------**-- >> >> Marco D'Ambros >> >> phone : (+61) (0) 435809628 >> >> web : www.marcodambros.com >> >> mail : [email protected] >> >> >> >> >> >> >> >> >> On Wed, Oct 3, 2012 at 11:44 AM, Jesse Kretschmer <[email protected]> >> wrote: >> >>> >> >>> I would certainly advise against "from bigpackage import *" as the >> >>> wildcard could lead to namespace collision and general funny business. >> >>> >> >>> Let me hijack this topic with another question about imports. Which >> is >> >>> more correct; "import maya.cmds as cmds" or "from maya import cmds"? >> I >> >>> prefer the latter, but mostly because it is fewer keystrokes. >> >>> >> >>> >> >>> On Tue, Oct 2, 2012 at 6:09 PM, Justin Israel <[email protected]> >> >> >>> wrote: >> >>>> >> >>>> Why do these sites advise against "from ... import ..."? >> >>>> >> >>>> >> >>>> On Oct 2, 2012, at 5:01 PM, Python inside Maya <[email protected]> >> >> >>>> wrote: >> >>>> >> >>>> I would love to hear some thoughts on handling python imports, >> >>>> specifically in larger code depots with deeper hierarchies. >> >>>> The way I see it, the safest way to go is to import >> >>>> company.teamA.whatever.module >> >>>> >> >>>> The big draw back that I see is that the code becomes bloated with >> >>>> company.teamA.whatever.module.**class().method() >> >>>> From that perspective - from company.teamA.whatever import module - >> >>>> seems like a better choice >> >>>> Then code reads module.class().method() >> >>>> >> >>>> This gets more and more problematic, the deeper the code depot >> hierarchy >> >>>> is/gets. When reading up on Python imports several sites advice >> against >> >>>> using the from-import technique. >> >>>> Any input is appreciated, >> >>>> >> >>>> Thanks, >> >>>> /Christian >> >>>> >> >>>> -- >> >>>> view archives: >> >>>> http://groups.google.com/**group/python_inside_maya<http://groups.google.com/group/python_inside_maya> >> >>>> change your subscription settings: >> >>>> http://groups.google.com/**group/python_inside_maya/**subscribe<http://groups.google.com/group/python_inside_maya/subscribe> >> >>>> >> >>>> -- >> >>>> view archives: >> >>>> http://groups.google.com/**group/python_inside_maya<http://groups.google.com/group/python_inside_maya> >> >>>> change your subscription settings: >> >>>> http://groups.google.com/**group/python_inside_maya/**subscribe<http://groups.google.com/group/python_inside_maya/subscribe> >> >>> >> >>> >> >>> -- >> >>> view archives: >> >>> http://groups.google.com/**group/python_inside_maya<http://groups.google.com/group/python_inside_maya> >> >>> change your subscription settings: >> >>> http://groups.google.com/**group/python_inside_maya/**subscribe<http://groups.google.com/group/python_inside_maya/subscribe> >> >> >> >> >> >> -- >> >> view archives: >> >> http://groups.google.com/**group/python_inside_maya<http://groups.google.com/group/python_inside_maya> >> >> change your subscription settings: >> >> http://groups.google.com/**group/python_inside_maya/**subscribe<http://groups.google.com/group/python_inside_maya/subscribe> >> > >> > >> > -- >> > view archives: >> > http://groups.google.com/**group/python_inside_maya<http://groups.google.com/group/python_inside_maya> >> > change your subscription settings: >> > http://groups.google.com/**group/python_inside_maya/**subscribe<http://groups.google.com/group/python_inside_maya/subscribe> >> >> >> >> -- >> Technical Director @ DreamWorks Animation >> > -- > view archives: http://groups.google.com/group/python_inside_maya > change your subscription settings: > http://groups.google.com/group/python_inside_maya/subscribe > -- view archives: http://groups.google.com/group/python_inside_maya change your subscription settings: http://groups.google.com/group/python_inside_maya/subscribe
