You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
2.0 KiB
Python
66 lines
2.0 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""
|
|
f2py c_library.pyf c_functions.c -c
|
|
|
|
See also http://www.scipy.org/Cookbook/CompilingExtensionsOnWindowsWithMinGW
|
|
"""
|
|
import os
|
|
import sys
|
|
|
|
|
|
def which(program):
|
|
"""
|
|
Return filepath to program if it exists
|
|
|
|
In order to test if a certain executable exists, it will search for the
|
|
program name in the environment variables.
|
|
If program is a full path to an executable, it will check it exists
|
|
|
|
Copied from:
|
|
http://stackoverflow.com/questions/377017/test-if-executable-exists-in-python/
|
|
It is supposed to mimic the UNIX command "which"
|
|
"""
|
|
|
|
def is_exe(fpath):
|
|
return os.path.exists(fpath) and os.access(fpath, os.X_OK)
|
|
|
|
fpath, unused_fname = os.path.split(program)
|
|
if fpath:
|
|
if is_exe(program):
|
|
return program
|
|
else:
|
|
for path in os.environ["PATH"].split(os.pathsep):
|
|
exe_file = os.path.join(path, program)
|
|
if is_exe(exe_file):
|
|
return exe_file
|
|
|
|
return None
|
|
|
|
|
|
def f2py_call_str():
|
|
'''Return which f2py callable is in the path regardless of platform'''
|
|
|
|
# define possible options:
|
|
# on Arch Linux, python and f2py are the calls corresponding to python 3
|
|
# and python2/f2py2 for python 2
|
|
# other Linux versions might still use python/f2py for python 2
|
|
|
|
if os.path.basename(sys.executable).endswith('2'):
|
|
options = ('f2py2', 'f2py2.6', 'f2py2.7',)
|
|
else: # on Windows and other Linux using python/f2py
|
|
options = ('f2py.exe', 'f2py.bat', 'f2py', 'f2py2.6', 'f2py2.7',
|
|
'f2py.py',)
|
|
for k in options:
|
|
if which(k):
|
|
# Found the f2py path, no need to look further
|
|
f2py_call = k
|
|
f2py_path = which(k)
|
|
break
|
|
|
|
try:
|
|
print('found f2py in:', f2py_path)
|
|
return f2py_call
|
|
except NameError:
|
|
raise UserWarning('Couldn\'t locate f2py. '
|
|
'Should be part of NumPy installation.')
|