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

Reply via email to