Difference between revisions of "Python Integration"

From PyMOLWiki
Jump to navigation Jump to search
(New page: ==Launching Python programs from PyMOL == Running a Python script from PyMOL, usually the command: <source lang="python"> run script.py </source> Is enough. Of course, the file script.py needs to be in ...)
 
m (python3)
 
(One intermediate revision by one other user not shown)
Line 23: Line 23:
  
 
==Launching PyMOL from Python programs==
 
==Launching PyMOL from Python programs==
Running PyMOL from a Python script requires two commands:
+
 
<source lang="python">
+
See [[Launching From a Script]].
import pymol
 
pymol.finish_launching()
 
</source>
 
  
 
==Using the PyMOL commandline==
 
==Using the PyMOL commandline==
Line 33: Line 30:
 
Are you aware that the PyMOL command line is also a Python command line? You can just use PyMOL interactively in that fashion.
 
Are you aware that the PyMOL command line is also a Python command line? You can just use PyMOL interactively in that fashion.
 
<source lang="python">
 
<source lang="python">
PyMOL>print 1+1
+
PyMOL>print(1+1)
 
2
 
2
 
PyMOL>from random import random
 
PyMOL>from random import random
PyMOL>print random()
+
PyMOL>print(random())
 
0.739460642143
 
0.739460642143
 +
</source>
  
 
The only major difference is that the default namespace for PyMOL is "pymol" not "__main__"
 
The only major difference is that the default namespace for PyMOL is "pymol" not "__main__"
  
PyMOL>print __name__
+
<source lang="python">
 +
PyMOL>print(__name__)
 
pymol
 
pymol
 
</source>
 
</source>

Latest revision as of 02:35, 12 February 2020

Launching Python programs from PyMOL

Running a Python script from PyMOL, usually the command:

run script.py

Is enough. Of course, the file script.py needs to be in the working directory. You can also launch Python scripts when starting PyMOL. Asynchronous means, that a new Python thread is started:

pymol example.py     # synchronous, in PyMOL module
pymol -r example.py  # synchronous in __main__ module
pymol -l example.py  # asychronous in a new module

You can also launch python programs from within PyMOL with the commands:

run example.py        # synchronous in pymol module
run example.py,main   # synchronous in __main__ module

spawn example.py        # asychronous in a new module
spawn example.py,global # asychronous in the PyMOL module
spawn example.py,main   # asychronous in the __main__ module

Launching PyMOL from Python programs

See Launching From a Script.

Using the PyMOL commandline

Are you aware that the PyMOL command line is also a Python command line? You can just use PyMOL interactively in that fashion.

PyMOL>print(1+1)
2
PyMOL>from random import random
PyMOL>print(random())
0.739460642143

The only major difference is that the default namespace for PyMOL is "pymol" not "__main__"

PyMOL>print(__name__)
pymol