-
Notifications
You must be signed in to change notification settings - Fork 15
Expand file tree
/
Copy pathsetup.py
More file actions
136 lines (122 loc) · 5.2 KB
/
setup.py
File metadata and controls
136 lines (122 loc) · 5.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# emacs: -*- mode: python; py-indent-offset: 4; indent-tabs-mode: nil -*-
# vi: set ft=python sts=4 ts=4 sw=4 et:
import sys
import os.path
import numpy
from distutils.core import setup, Extension
import sipdistutils
try:
import PyQt4.pyqtconfig
pyqtcfg = PyQt4.pyqtconfig.Configuration()
except ImportError:
print 'No module named pyqtconfig found in PyQt4'
import PyQt4.QtCore
# won't work for SIP v5
import sipconfig
cfg = sipconfig.Configuration()
sip_dir = cfg.default_sip_dir
for p in (os.path.join(sip_dir, 'PyQt4'), sip_dir):
if os.path.exists(os.path.join(p, 'QtCore', 'QtCoremod.sip')):
sip_dir = p
break
cfg = {
'pyqt_version': PyQt4.QtCore.PYQT_VERSION,
'pyqt_version_str': PyQt4.QtCore.PYQT_VERSION_STR,
'pyqt_sip_flags': PyQt4.QtCore.PYQT_CONFIGURATION['sip_flags'],
'pyqt_mod_dir': cfg.default_mod_dir,
'pyqt_sip_dir': sip_dir,
'pyqt_bin_dir': cfg.default_bin_dir}
pyqtcfg = sipconfig.Configuration([cfg])
print("pyqt_version:%06.0x" % pyqtcfg.pyqt_version)
print("pyqt_version_num:%d" % pyqtcfg.pyqt_version)
print("pyqt_version_str:%s" % pyqtcfg.pyqt_version_str)
#-- Qt library configuration
try:
qt_inc_dir = pyqtcfg.qt_inc_dir
qt_lib_dir = pyqtcfg.qt_lib_dir
except AttributeError:
print("Can't extract qt library paths which fit your installation automatically.\nPlease provide the paths of Qt_include and Qt_lib.\nSuch as:")
print('qt_inc_dir = path/to/Qt_include')
print('qt_lib_dir = path/to/Qt_lib')
print('Note that you should use a compatible compiler and Qt version as was used for building PyQt.')
qt_inc_dir = input('qt_inc_dir = ')
qt_lib_dir = input('qt_lib_dir = ')
#--
qt_lib_dirs = [qt_lib_dir]
qt_libraries = ['QtCore', 'QtGui']
if sys.platform == 'win32':
# Need better criterion - this should only apply to mingw32
qt_lib_dirs.extend((qt_lib_dir.replace(r'\lib', r'\bin'),
os.path.dirname(PyQt4.__file__)))
qt_libraries = [lib + '4' for lib in qt_libraries]
qimageview = Extension('froi.algorithm.qimageview',
sources=[r'3rdparty/qimageview.sip'],
include_dirs=[numpy.get_include(),
qt_inc_dir,
os.path.join(qt_inc_dir, 'QtCore'),
os.path.join(qt_inc_dir, 'QtGui')])
qimageview.libraries.extend(qt_libraries)
qimageview.library_dirs.extend(qt_lib_dirs)
#if sys.platform == 'darwin':
# ## Qt is distributed as 'framwork' on OS X
# #for lib in qt_libraries:
# # qimageview.extra_link_args.extend(['-framework', lib])
# #for d in qt_lib_dirs:
# # qimageview.extra_link_args.append('-F' + d)
# qimageview.libraries.extend(qt_libraries)
# qimageview.library_dirs.extend(qt_lib_dirs)
#else:
# qimageview.libraries.extend(qt_libraries)
# qimageview.library_dirs.extend(qt_lib_dirs)
class build_ext(sipdistutils.build_ext):
def _sip_compile(self, sip_bin, source, sbf):
try:
import PyQt4.pyqtconfig
pyqtcfg = PyQt4.pyqtconfig.Configuration()
except ImportError:
print 'No module named pyqtconfig found in PyQt4'
import PyQt4.QtCore
# won't work for SIP v5
import sipconfig
cfg = sipconfig.Configuration()
sip_dir = cfg.default_sip_dir
for p in (os.path.join(sip_dir, 'PyQt4'), sip_dir):
if os.path.exists(os.path.join(p, 'QtCore', 'QtCoremod.sip')):
sip_dir = p
break
cfg = {
'pyqt_version': PyQt4.QtCore.PYQT_VERSION,
'pyqt_version_str': PyQt4.QtCore.PYQT_VERSION_STR,
'pyqt_sip_flags': PyQt4.QtCore.PYQT_CONFIGURATION['sip_flags'],
'pyqt_mod_dir': cfg.default_mod_dir,
'pyqt_sip_dir': sip_dir,
'pyqt_bin_dir': cfg.default_bin_dir}
pyqtcfg = sipconfig.Configuration([cfg])
self.spawn([sip_bin, '-c', self.build_temp, '-b', sbf] +
pyqtcfg.pyqt_sip_flags.split() +
['-I', pyqtcfg.pyqt_sip_dir, source])
# Read version from local froi/version.py without pulling in
# froi/__init__.py
sys.path.insert(0, 'froi')
from version import __version__
setup(name='freeroi',
version=__version__,
description='Toolbox for ROI defining',
author='Lijie Huang, Zetian Yang, Xiayu Chen, Guangfu Zhou, Zhaoguo Liu, and Zonglei Zhen, from Neuroinformatic Team@LiuLab',
author_email=['huanglijie.seal@gmail.com', 'zetian.yang@gmail.com', 'sunshine_drizzle@foxmail'],
packages=['froi',
'froi.algorithm',
'froi.core',
'froi.widgets',
'froi.interface',
'froi.io'],
scripts=['bin/freeroi', 'bin/freeroi-sess'],
package_data={'froi': ['data/label/face-object/*',
'data/labelconfig/*',
'data/standard/*',
'data/atlas/*',
'icon/*']
},
ext_modules=[qimageview],
cmdclass={'build_ext': build_ext}
)