pydantic 的源码为什么又有 py 文件,又有 so 文件呢?
pydantic 的源码为什么又有 py 文件,又有 so 文件呢?而且命名都是一样的?
难道是一个逻辑,即用 python 写了一边,又用 c 语言写了一边吗?
但是如果是这样的话,如何保证逻辑的绝对一致性呢?
还是说有什么魔法可以把 py 文件静态编译为 so 文件?
回答:
Cython
这是 setup.py 里编译的地方
python">if not any(arg in sys.argv for arg in ['clean', 'check']) and 'SKIP_CYTHON' not in os.environ: try:
from Cython.Build import cythonize
except ImportError:
pass
else:
# For cython test coverage install with `make build-trace`
compiler_directives = {}
if 'CYTHON_TRACE' in sys.argv:
compiler_directives['linetrace'] = True
# Set CFLAG to all optimizations (-O3)
# Any additional CFLAGS will be appended. Only the last optimization flag will have effect
os.environ['CFLAGS'] = '-O3 ' + os.environ.get('CFLAGS', '')
ext_modules = cythonize(
'pydantic/*.py',
exclude=['pydantic/generics.py'],
nthreads=int(os.getenv('CYTHON_NTHREADS', 0)),
language_level=3,
compiler_directives=compiler_directives,
)
cython: source files and compilation
以上是 pydantic 的源码为什么又有 py 文件,又有 so 文件呢? 的全部内容, 来源链接: utcz.com/p/938465.html