本文整理汇总了Python中monty.os.path.which函数的典型用法代码示例。如果您正苦于以下问题:Python which函数的具体用法?Python which怎么用?Python which使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了which函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: run_task
def run_task(self, fw_spec):
fw_env = fw_spec.get("_fw_env", {})
if "mpi_cmd" in fw_env:
mpi_cmd = fw_spec["_fw_env"]["mpi_cmd"]
elif which("mpirun"):
mpi_cmd = "mpirun"
elif which("aprun"):
mpi_cmd = "aprun"
else:
raise ValueError("No MPI command found!")
nproc = os.environ['PBS_NP']
v_exe = shlex.split('{} -n {} {}'.format(mpi_cmd, nproc, fw_env.get("vasp_cmd", "vasp")))
gv_exe = shlex.split('{} -n {} {}'.format(mpi_cmd, nproc, fw_env.get("gvasp_cmd", "gvasp")))
# override vasp executable in custodian jobs
for job in self.jobs:
job.vasp_cmd = v_exe
job.gamma_vasp_cmd = gv_exe
# run the custodian
c = Custodian(self.handlers, self.jobs, self.max_errors)
c.run()
update_spec = {'prev_vasp_dir': os.getcwd(),
'prev_task_type': fw_spec['task_type']}
return FWAction(update_spec=update_spec)
示例2: run_task
def run_task(self, fw_spec):
# write a file containing the formula and task_type for somewhat
# easier file system browsing
self._write_formula_file(fw_spec)
fw_env = fw_spec.get("_fw_env", {})
if "mpi_cmd" in fw_env:
mpi_cmd = fw_spec["_fw_env"]["mpi_cmd"]
elif which("mpirun"):
mpi_cmd = "mpirun"
elif which("aprun"):
mpi_cmd = "aprun"
else:
raise ValueError("No MPI command found!")
nproc = os.environ['PBS_NP']
v_exe = shlex.split('{} -n {} {}'.format(mpi_cmd, nproc, fw_env.get("vasp_cmd", "vasp")))
gv_exe = shlex.split('{} -n {} {}'.format(mpi_cmd, nproc, fw_env.get("gvasp_cmd", "gvasp")))
print 'host:', os.environ['HOSTNAME']
for job in self.jobs:
job.vasp_cmd = v_exe
job.gamma_vasp_cmd = gv_exe
incar_errors = check_incar(fw_spec['task_type'])
if incar_errors:
raise ValueError("Critical error: INCAR does not pass checks: {}".format(incar_errors))
logging.basicConfig(level=logging.DEBUG)
c = Custodian(self.handlers, self.jobs, max_errors=self.max_errors, gzipped_output=False, validators=[VasprunXMLValidator()]) # manual gzip
custodian_out = c.run()
if self.gzip_output:
for f in os.listdir(os.getcwd()):
if not f.lower().endswith("gz") and not f.endswith(".OU") and not f.endswith(".ER"):
with open(f, 'rb') as f_in, \
GzipFile('{}.gz'.format(f), 'wb') as f_out:
f_out.writelines(f_in)
os.remove(f)
all_errors = set()
for run in custodian_out:
for correction in run['corrections']:
all_errors.update(correction['errors'])
stored_data = {'error_list': list(all_errors)}
update_spec = {'prev_vasp_dir': os.getcwd(),
'prev_task_type': fw_spec['task_type'],
'mpsnl': fw_spec['mpsnl'],
'snlgroup_id': fw_spec['snlgroup_id'],
'run_tags': fw_spec['run_tags'],
'parameters': fw_spec.get('parameters')}
return FWAction(stored_data=stored_data, update_spec=update_spec)
示例3: write_open_notebook
def write_open_notebook(flow, options):
"""
Generate an ipython notebook and open it in the browser.
Return system exit code.
See also:
http://nbviewer.jupyter.org/github/maxalbert/auto-exec-notebook/blob/master/how-to-programmatically-generate-and-execute-an-ipython-notebook.ipynb
"""
import nbformat
nbf = nbformat.v4
nb = nbf.new_notebook()
nb.cells.extend([
#nbf.new_markdown_cell("This is an auto-generated notebook for %s" % os.path.basename(pseudopath)),
nbf.new_code_cell("""\
##%%javascript
##IPython.OutputArea.auto_scroll_threshold = 9999;
from __future__ import print_function, division, unicode_literals
from abipy import abilab
%matplotlib notebook
import pylab
pylab.rcParams['figure.figsize'] = (25.0, 10.0)
import seaborn as sns"""),
nbf.new_code_cell("flow = abilab.Flow.pickle_load('%s')" % flow.workdir),
nbf.new_code_cell("flow.show_dependencies()"),
nbf.new_code_cell("flow.check_status(show=True, verbose=0)"),
nbf.new_code_cell("flow.show_inputs(nids=None, wslice=None)"),
nbf.new_code_cell("flow.inspect(nids=None, wslice=None)"),
nbf.new_code_cell("flow.show_abierrors()"),
nbf.new_code_cell("flow.show_qouts()"),
])
# Next, we write it to a file on disk that we can then open as a new notebook.
# Note: This should be as easy as: nbf.write(nb, fname), but the current api
# is a little more verbose and needs a real file-like object.
import tempfile, io
_, nbpath = tempfile.mkstemp(suffix='.ipynb', text=True)
with io.open(nbpath, 'wt', encoding="utf8") as f:
nbformat.write(nb, fh)
if which("jupyter") is not None:
return os.system("jupyter notebook %s" % nbpath)
if which("ipython") is not None:
return os.system("ipython notebook %s" % nbpath)
raise RuntimeError("Cannot find neither jupyther nor ipython. Install them with `pip install`")
示例4: __init__
def __init__(self, input_str, calc_type, workdir=None):
super(OncvGenerator, self).__init__(workdir=workdir)
self._input_str = input_str
self.calc_type = calc_type
calctype2exec = {
"non-relativistic": which("oncvpspnr.x"),
"scalar-relativistic": which("oncvpsp.x"),
"fully-relativistic": which("oncvpspr.x")}
self._executable = calctype2exec[calc_type]
if self.executable is None:
msg = "Cannot find executable for oncvpsp is PATH. Use `export PATH=dir_with_executable:$PATH`"
raise RuntimeError(msg)
示例5: has_abinit
def has_abinit(version=None, op=">="):
"""
True if abinit is in $PATH.
If version is not None, abinit version op version is evaluated and the result is returned.
False if condition is not fulfilled or the execution of ``abinit -v`` raised CalledProcessError
"""
abinit = which("abinit")
if abinit is None: return False
if version is None: return abinit is not None
try:
abinit_version = str(subprocess.check_output(["abinit", "-v"]))
except subprocess.CalledProcessError:
# Some MPI implementations require the mpirunner.
try:
abinit_version = subprocess.check_output(["mpirun", "-n", "1", "abinit", "-v"])
except subprocess.CalledProcessError:
try:
abinit_version = subprocess.check_output(["mpiexec", "-n", "1", "abinit", "-v"])
except subprocess.CalledProcessError as exc:
logger.warning(exc.output)
return False
return cmp_version(abinit_version, version, op=op)
示例6: make_open_notebook
def make_open_notebook(options):
"""
Generate an ipython notebook and open it in the browser.
Return system exit code.
Raise:
RuntimeError if jupyther is not in $PATH
"""
import nbformat
nbf = nbformat.v4
nb = nbf.new_notebook()
nb.cells.extend([
nbf.new_markdown_cell("# This is an auto-generated notebook for %s" % os.path.relpath(filepath)),
nbf.new_code_cell("""\
from __future__ import print_function, division, unicode_literals, absolute_import
%matplotlib notebook
#import numpy as np
#import seaborn as sns
from abipy import abilab\
"""),
nbf.new_code_cell("abifile = abilab.abiopen('%s')" % options.filepath)
])
_, nbpath = tempfile.mkstemp(suffix='.ipynb', text=True)
with io.open(nbpath, 'wt', encoding="utf8") as f:
nbformat.write(nb, f)
if which("jupyter") is None:
raise RuntimeError("Cannot find jupyter in PATH. Install it with `pip install`")
return os.system("jupyter notebook %s" % nbpath)
示例7: __init__
def __init__(self):
self._figures = collections.OrderedDict()
self.animate_bin = which("animate")
if self.animate_bin is None:
raise RuntimeError("Cannot find animate executable in $PATH.\n Please install the ImageMagick suite of tools.")
示例8: _find_loc
def _find_loc(app_name):
# Try command line version
path = which(app_name)
if path is not None: return path
# Treat Mac OsX applications.
if is_macosx():
system_apps = [f.lower() for f in os.listdir("/Applications")]
try:
i = system_apps.index(app_name)
return os.path.join("/Applications", system_apps[i])
except ValueError:
try:
i = system_apps.index(app_name + ".app")
return os.path.join("/Applications", system_apps[i] + ".app")
except ValueError:
pass
try:
user_dir = os.path.expanduser("~/Applications/")
user_apps = [f.lower() for f in os.listdir(user_dir)]
try:
i = user_apps.index(app_name)
return os.path.join(user_dir, user_apps[i])
except ValueError:
try:
i = user_apps.index(app_name + ".app")
return os.path.join("/Applications", user_apps[i] + ".app")
except ValueError:
pass
except Exception:
pass
return None
示例9: has_abinit
def has_abinit(version, cmp=">="):
"""
Return True if abinit is in $PATH and version is cmp version.
False if condition is not fulfilled or the execution of `abinit -v`
raised CalledProcessError
"""
if which("abinit") is None:
return False
try:
abiver = str(subprocess.check_output(["abinit", "-v"]))
except subprocess.CalledProcessError:
# Some MPI implementations require the mpirunner.
try:
abiver = subprocess.check_output(["mpirun", "-n", "1", "abinit", "-v"])
except subprocess.CalledProcessError:
try:
abiver = subprocess.check_output(["mpiexec", "-n", "1", "abinit", "-v"])
except subprocess.CalledProcessError as exc:
logger.warning(exc.output)
return False
return {">=": abiver.strip() >= version.strip(),
"==": abiver.strip() == version.strip()}[cmp]
示例10: __init__
def __init__(self, username, hostname, workdir, sshfs_mountpoint=None):
"""
Args:
username:
Username used to login on the cluster.
hostname:
Name of the host.
workdir:
Absolute path (on the remote host) where the `AbinitFlows` will be produced.
sshfs_mountpoint:
Absolute path (on the local host) where the file system of
the remote host will be mounted via sshfs.
"""
self.username, self.hostname, self.workdir = username, hostname, workdir
if not os.path.isabs(self.workdir):
raise ValueError("Please use an absolute path for the remote workdir")
self.port = 22 # Port for SSH connection
self.timeout = 30 # Timeout in seconds.
self.sshfs_mountpoint = os.path.expanduser(sshfs_mountpoint) if sshfs_mountpoint else None
if self.sshfs_mountpoint is not None and which("sshfs") is None:
warnings.warn("Cannot locate sshfs in $PATH, cannot mount remote filesystem without SSHFS")
示例11: __init__
def __init__(self, fft_input, executable="fftprof"):
self.verbose = 1
self.fft_input = fft_input
self.executable = which(executable)
if self.executable is None:
raise self.Error("Cannot find executable %s in $PATH" % executable)
示例12: dojo_nbcompare
def dojo_nbcompare(self, what="all", **kwargs):
"""
Generate an ipython notebook to compare the results in the dojoreport (calls dojo_compare).
"""
paths = [p.path for p in self]
import nbformat
nbf = nbformat.v4
nb = nbf.new_notebook()
nb.cells.extend([
#nbf.new_markdown_cell("# This is an auto-generated notebook for %s" % os.path.basename(pseudopath)),
nbf.new_code_cell("""\
from __future__ import print_function, division, unicode_literals
%matplotlib notebook"""),
nbf.new_code_cell("""\
from pseudo_dojo.core.pseudos import DojoTable
pseudos = DojoTable(%s)""" % str(paths)),
nbf.new_code_cell("pseudos.dojo_compare(what='%s')" % what),
])
_, nbpath = tempfile.mkstemp(suffix='.ipynb', text=True)
import io
with io.open(nbpath, 'wt', encoding="utf8") as f:
nbformat.write(nb, f)
if which("jupyter") is None:
raise RuntimeError("Cannot find jupyter in PATH. Install it with `pip install`")
return os.system("jupyter notebook %s" % nbpath)
示例13: make_and_open_notebook
def make_and_open_notebook(self, nbpath=None, foreground=False): # pragma: no cover
"""
Generate an jupyter_ notebook and open it in the browser.
Args:
nbpath: If nbpath is None, a temporay file is created.
foreground: By default, jupyter is executed in background and stdout, stderr are redirected
to devnull. Use foreground to run the process in foreground
Return:
system exit code.
Raise:
`RuntimeError` if jupyter_ is not in $PATH
"""
nbpath = self.write_notebook(nbpath=nbpath)
if which("jupyter") is None:
raise RuntimeError("Cannot find jupyter in $PATH. Install it with `conda install jupyter or `pip install jupyter`")
if foreground:
return os.system("jupyter notebook %s" % nbpath)
else:
fd, tmpname = tempfile.mkstemp(text=True)
print(tmpname)
cmd = "jupyter notebook %s" % nbpath
print("Executing:", cmd)
print("stdout and stderr redirected to %s" % tmpname)
import subprocess
process = subprocess.Popen(cmd.split(), shell=False, stdout=fd, stderr=fd)
cprint("pid: %s" % str(process.pid), "yellow")
return 0
示例14: open_terminal
def open_terminal():
"""Try to figure which terminal is available."""
retcode = 1
if retcode and which("gnome-terminal") is not None:
retcode = os.system("gnome-terminal -e 'ssh %s -X'" % cluster.hostname)
if retcode and which("konsole") is not None:
retcode = os.system("konsole -e 'ssh %s -X'" % cluster.hostname)
# This does not work
#retcode = os.system('open -a Terminal -n --args %s -X" % cluster.hostname")
if retcode: # Fallback to xterm.
retcode = os.system("xterm -e ssh %s -X" % cluster.hostname)
return retcode
示例15: abicheck
def abicheck():
"""
This function tests if the most important ABINIT executables
can be found in $PATH and whether the python modules needed
at run-time can be imported.
Raises:
RuntimeError if not all the dependencies are fulfilled.
"""
import os
# Executables must be in $PATH. Unfortunately we cannot
# test the version of the binaries.
# A possible approach would be to execute "exe -v"
# but supporting argv in Fortran is not trivial.
# Dynamic linking is tested by calling `ldd exe`
executables = [
"abinit",
"mrgddb",
"mrggkk",
"anaddb",
]
has_ldd = which("ldd") is not None
err_lines = []
app = err_lines.append
for exe in executables:
exe_path = which(exe)
if exe_path is None:
app("Cannot find %s in $PATH" % exe)
else:
if has_ldd and os.system("ldd %s > /dev/null " % exe_path) != 0:
app("Missing shared library dependencies for %s" % exe)
try:
software_stack()
except:
app(_straceback())
if err_lines:
header = "The environment on the local machine is not properly setup\n"
raise RuntimeError(header + "\n".join(err_lines))
return 0