Mac OSX CPython ctypes库功能和正确的文件夹位置

Mac OSX CPython ctypes库功能和正确的文件夹位置,python,Python,我有一个关于CPython开源代码的问题。我注意到在MacOSX操作系统上,一些CPython库被编译到下面列出的目录中 /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/lib-dynload 关于CPythonctypes库。这是编译成名为\u ctypes.cpython-38-darwin.so的文件的库吗?如果是这样的话,这就是位于Github的CPython库的ctypes源代码。我问这个问题是因为我试图修

我有一个关于CPython开源代码的问题。我注意到在MacOSX操作系统上,一些CPython库被编译到下面列出的目录中

/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/lib-dynload

关于CPythonctypes库。这是编译成名为\u ctypes.cpython-38-darwin.so的文件的库吗?如果是这样的话,这就是位于Github的CPython库的ctypes源代码。我问这个问题是因为我试图修改正确的源代码,并学习一些关于CPython的知识。我试图确定cyptyes库是否只是通过这个加载本机框架和库,或者通过其他方式实现ctypes。或者它是通过类似于types.py的库来实现的


与许多Python库一样,ctypes也有C和Python编写的部分

C模块是内部的,称为_ctypes。您的_ctypes.cpython-38-darwin.so(请注意开始处的下划线)是本机代码,由位于

它的公共接口是用Python编写的,它有依赖于平台的代码从底层操作系统加载本机lib,这些代码是您粘贴的

您可以看到模块文件使用Python本身的位置,如下所示:

>>> import ctypes
>>> ctypes.__file__
'C:\\Users\\antont\\AppData\\Local\\Programs\\Python\\Python38\\lib\\ctypes\\__init__.py'

>>> import _ctypes
>>> _ctypes.__file__
'C:\\Users\\antont\\AppData\\Local\\Programs\\Python\\Python38\\DLLs\\_ctypes.pyd'

在windows上,本机代码库是一个DLL,在Python DLL中称为.pyd——与Mac上的.dylib相同,在Linux和其他系统上称为.dylib。

感谢您给出的好答案。如果在Mac OSX上,应用程序正在使用_ctypes.cpython-38-darwin.so模块。它是使用Python API模块ctypes还是像_ctypes.C中那样使用底层C代码。如果你能回答这个问题,那将是很大的帮助。我想在已经编译的程序中进行更改。通过编辑CPython源代码并在模块上进行复制。它使用这两种方法。导入ctypes时,将导入py模块,这将进一步导入本机
\u ctypes
模块。根据所需的更改,您需要触摸其中一个或两个。本机代码的py端导入位于
>>> import ctypes
>>> ctypes.__file__
'C:\\Users\\antont\\AppData\\Local\\Programs\\Python\\Python38\\lib\\ctypes\\__init__.py'

>>> import _ctypes
>>> _ctypes.__file__
'C:\\Users\\antont\\AppData\\Local\\Programs\\Python\\Python38\\DLLs\\_ctypes.pyd'