pydantic 的源码为什么又有 py 文件,又有 so 文件呢?

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

回到顶部