fix windows error
Showing
1 changed file
with
18 additions
and
0 deletions
| ... | @@ -7,11 +7,13 @@ from distutils.core import setup | ... | @@ -7,11 +7,13 @@ from distutils.core import setup |
| 7 | from distutils.extension import Extension | 7 | from distutils.extension import Extension |
| 8 | from Cython.Build import cythonize | 8 | from Cython.Build import cythonize |
| 9 | from Cython.Distutils import build_ext | 9 | from Cython.Distutils import build_ext |
| 10 | import platform | ||
| 10 | 11 | ||
| 11 | 12 | ||
| 12 | if sys.version_info[0] < 3: | 13 | if sys.version_info[0] < 3: |
| 13 | raise Exception("This program requires at least python3.6") | 14 | raise Exception("This program requires at least python3.6") |
| 14 | 15 | ||
| 16 | is_windows = platform.system() == 'Windows' | ||
| 15 | 17 | ||
| 16 | parser = argparse.ArgumentParser(description='compile the .py to .so(Linux/Mac) or .pdy(Win)') | 18 | parser = argparse.ArgumentParser(description='compile the .py to .so(Linux/Mac) or .pdy(Win)') |
| 17 | parser.add_argument('-i', '--input', help='the directory(file) path of your project', required=True) | 19 | parser.add_argument('-i', '--input', help='the directory(file) path of your project', required=True) |
| ... | @@ -20,6 +22,18 @@ parser.add_argument('-e', '--exclude', help='exclude file. eg: ignore/ignore.py, | ... | @@ -20,6 +22,18 @@ parser.add_argument('-e', '--exclude', help='exclude file. eg: ignore/ignore.py, |
| 20 | args = parser.parse_args() | 22 | args = parser.parse_args() |
| 21 | 23 | ||
| 22 | 24 | ||
| 25 | def get_export_symbols_fixed(self, ext): | ||
| 26 | names = ext.name.split('.') | ||
| 27 | if names[-1] != "__init__": | ||
| 28 | initfunc_name = "PyInit_" + names[-1] | ||
| 29 | else: | ||
| 30 | # take name of the package if it is an __init__-file | ||
| 31 | initfunc_name = "PyInit_" + names[-2] | ||
| 32 | if initfunc_name not in ext.export_symbols: | ||
| 33 | ext.export_symbols.append(initfunc_name) | ||
| 34 | return ext.export_symbols | ||
| 35 | |||
| 36 | |||
| 23 | def get_exclude_paths(input_path): | 37 | def get_exclude_paths(input_path): |
| 24 | exclude_paths = [] | 38 | exclude_paths = [] |
| 25 | if args.exclude is not None and os.path.isdir(input_path): | 39 | if args.exclude is not None and os.path.isdir(input_path): |
| ... | @@ -140,6 +154,10 @@ def main(): | ... | @@ -140,6 +154,10 @@ def main(): |
| 140 | print('---------- compile start ----------') | 154 | print('---------- compile start ----------') |
| 141 | success = False | 155 | success = False |
| 142 | try: | 156 | try: |
| 157 | if is_windows: | ||
| 158 | # replace wrong version with the fixed: | ||
| 159 | build_ext.get_export_symbols = get_export_symbols_fixed | ||
| 160 | |||
| 143 | compiler_directives = {"language_level": '3'} | 161 | compiler_directives = {"language_level": '3'} |
| 144 | ext_modules = cythonize(module_list=extensions, | 162 | ext_modules = cythonize(module_list=extensions, |
| 145 | compiler_directives=compiler_directives) | 163 | compiler_directives=compiler_directives) | ... | ... |
-
Please register or sign in to post a comment