Ah, thank you very much this is exactly what I need! I know it's not super safe, but for rapid development, this will be perfect!
Thanks! On 07/18/2014 02:25 PM, Thomas Holder wrote: > Hi Matt, > > python has some limited support to reload a module. I actually used that a > lot when developing the plugin manager. This is just a hint, use with caution: > > set_key F1, import pmg_tk;reload(pmg_tk.startup.foo) > > https://docs.python.org/2/library/functions.html#reload > > This will not re-invoke the plugin registration function (__init_plugin__) so > if you have a menu item for your GUI, that might still launch the old (not > reloaded) version. > > Cheers, > Thomas > > On 18 Jul 2014, at 14:12, Matthew Baumgartner <mp...@pitt.edu> wrote: > >> Hi, >> It is possible for users to run without a GUI, but it has a GUI and when I >> am making changes to it I would like faster turn around times between edits >> to my code. >> Matt >> On 07/18/2014 02:08 PM, Sampson, Jared wrote: >>> Hi Matt - >>> >>> Does your plugin require a GUI, or can you rely on scripted commands and >>> output files for your tests? >>> >>> For any tests that don’t need the GUI, you might consider running them with >>> something like `pymol -ckq my_test.pml`. >>> >>> http://www.pymolwiki.org/index.php/Command_Line_Options >>> >>> Cheers, >>> Jared >>> >>> -- >>> Jared Sampson >>> Xiangpeng Kong Lab >>> NYU Langone Medical Center >>> http://kong.med.nyu.edu/ >>> >>> >>> >>> >>> >>> >>> On Jul 18, 2014, at 1:47 PM, Matthew Baumgartner <mp...@pitt.edu> wrote: >>> >>>> Hi, >>>> Thank you for you suggestions. >>>> However, I was looking for a way to do it without restarting pymol if >>>> possible. Currently, restarting is the fastest solution, but it still >>>> takes up about 10-15 seconds to close pymol, restart it, and have it load >>>> the structures I need to test my script. >>>> >>>> One question that I have is that when pymol starts up, does it load the >>>> scripts in the plugin menu into memory? Or when you click on the plugin in >>>> the menu, does that read from a file on the disk somewhere? >>>> My testing indicates the former, because launching pymol and then editing >>>> the script in the ~/.pymol/startup folder does not change the plugin. >>>> >>>> Ideally, what I would like to be able to do is launch pymol once, then >>>> open my plugin. Then if I make some changes to the code in the appropriate >>>> folder, if I simply close the tk window and open the plugin from the menu >>>> again, it would reopen the plugin with the new changes. >>>> >>>> Short of that, running some commands in the command line window would also >>>> be acceptable. I tried using the execfile command you suggested, but that >>>> doesn't seem to do what I want. Did I do something wrong? >>>> >>>> Thanks again for your help, >>>> Matt >>>> >>>> On 07/18/2014 01:23 PM, Andreas Warnecke wrote: >>>>> Hej Matthew, >>>>> >>>>> 1. The advantage of using the plugin manager is that it will >>>>> automatically import all the plugin in the 'plugins' folder of the >>>>> 'pymol-script-repo'. This should re-load you plugin if it is located in a >>>>> folder managed by the plugin manager. The loading of plugins located >>>>> therein occurs automatically. >>>>> You can add paths to the plugin manager either manually or using scripts >>>>> during startup as described in the link. This is the way I prefer to do >>>>> it. Check the examples and linked pages: >>>>> http://www.pymolwiki.org/index.php/Plugin_manager >>>>> >>>>> Note that deliberate import of these plugins changes: >>>>> e.g. to import colorama.py post startup use: >>>>> import pmg_tk.startup.colorama >>>>> # this is shown in the info dialog of the Plugin manager >>>>> >>>>> A simple restart of PyMOL should re-load your updated plugin with the >>>>> changes made, provided the path is added to its list. It may require a >>>>> __init__.py file if it is a module. >>>>> >>>>> 2. if you are testing a plugin you can always have it in a separate >>>>> folder that you add yourself. >>>>> I sometime use the following to test scripts (added in the >>>>> run_on_startup.py): >>>>> ######################### >>>>> import sys >>>>> import os >>>>> sys.path.append(os.path.abspath(os.path.join(os.environ['PYMOL_PATH'], >>>>> 'plugins_private'))) # contains a folder called private with a (empty) >>>>> __init__.py file >>>>> import private >>>>> ######################### >>>>> >>>>> 3. Another (maybe deprecated?) way of running your code would be to use >>>>> 'execfile'. This would correspond to running the python code in PyMOL. >>>>> >>>>> ######################### >>>>> import os >>>>> PYMOLPATH=os.environ['PYMOL_PATH'] >>>>> #Append 'plugin' folder # Change to 'Pymol-script-repo' if required >>>>> PLUGINPATH=os.path.realpath(os.path.join(PYMOLPATH, 'plugins')) >>>>> >>>>> # Run every script in the folder and max. one sub-folder that is '.py' >>>>> PLUGINPATH_LIST=[os.path.realpath(os.path.join(PLUGINPATH, name)) for >>>>> name in os.listdir(PLUGINPATH) if os.path.isdir(os.path.join(PLUGINPATH, >>>>> name))] >>>>> PLUGINPATH_LIST=[PLUGINPATH]+PLUGINPATH_LIST >>>>> print 'paths for plugins: ' >>>>> for p in PLUGINPATH_LIST: print p >>>>> print >>>>> '#-------------------------------------------------------------------------------' >>>>> for d in PLUGINPATH_LIST: >>>>> print 'Initiating (sub)-directory: '+d >>>>> for f in os.listdir(d): >>>>> if f=='__init__.py': continue >>>>> if f.endswith('.py'): >>>>> print "Executing plugin: "+f >>>>> execfile(os.path.realpath(os.path.join(d, f))) >>>>> else: >>>>> if not os.path.isdir(os.path.join(d,f)):print 'skipping non >>>>> .py file: '+f >>>>> ######################### >>>>> >>>>> The drawback in 2 or 3 is that this will not work for true plugins that >>>>> add menus to PyMOL. >>>>> >>>>> 4. For simple script or short chunks of code I often copy-paste: >>>>> python >>>>> #code here >>>>> python end >>>>> >>>>> into the pymol mini shell. This is great for testing part of the code. >>>>> >>>>> In conclusion I recommend using option. 1 and restart PyMOL after making >>>>> changes to the script: The plugin manager is a very practical addition to >>>>> PyMOL and I love it. It just needs to be configured correctly, which is >>>>> something that changed in comparison to other PyMOL versions (cf. the >>>>> link). >>>>> Just beware: removing a installed plugin may physically delete the file. >>>>> So be sure to backup your script should you decide to remove scripts or >>>>> paths that were added to the Plugin Manager. >>>>> >>>>> Hope this will relieve some of the frustration. >>>>> >>>>> Cheers, >>>>> >>>>> Andreas >>>>> >>>>> >>>>> On Fri, Jul 18, 2014 at 5:41 PM, Matthew Baumgartner <mp...@pitt.edu> >>>>> wrote: >>>>> Hi, >>>>> So i am working on a pymol plugin (shameless plug) and I have been >>>>> annoyed how difficult it is to reinstall my plugin so I can see the >>>>> effect of the changes I have made. >>>>> >>>>> Currently, the process is: >>>>> Plugin Menu > Plugin Manager > Install New Plugin tab > Choose File... > >>>>> Navigate to script file (could be 5-8 clicks plus some scrolling) > >>>>> Select plugin directory > Ok > Hit Ok to confirm reinstall > Hit OK to >>>>> acknowledge the reinstall > Close the Plugin Manager > Go to the Plugin >>>>> Menu > Open my Plugin at the bottom. >>>>> >>>>> It's a super long process that really hampers rapid development, which is >>>>> super annoying when trying to tweak GUI elements. >>>>> >>>>> So to my question, is there a faster method for getting the plugin to use >>>>> the new code? I am open to basically any solution. >>>>> In my frustration, I've looked into reverse engineering the Plugin >>>>> Manager and making my own little script. But I figured I should ask here >>>>> before doing this. >>>>> >>>>> Thanks, >>>>> Matt >>>>> >>>>> >>>>> I'm using Pymol 1.7.1.7 and Ubuntu 13.10. > ------------------------------------------------------------------------------ Want fast and easy access to all the code in your enterprise? Index and search up to 200,000 lines of code with a free copy of Black Duck Code Sight - the same software that powers the world's largest code search on Ohloh, the Black Duck Open Hub! Try it now. http://p.sf.net/sfu/bds _______________________________________________ PyMOL-users mailing list (PyMOL-users@lists.sourceforge.net) Info Page: https://lists.sourceforge.net/lists/listinfo/pymol-users Archives: http://www.mail-archive.com/pymol-users@lists.sourceforge.net