我期待通过内置的库模块蟒蛇,例如在socket.py
我看行:_socket文件在哪里?
import _socket
据我所知,插座模块充当_socket
的包装。我想阅读_socket
中的一些源代码文件,以了解某些任务是如何完成的。
我在哪里可以找到_socket
或Linux机器上的任何其他共享文件?
我期待通过内置的库模块蟒蛇,例如在socket.py
我看行:_socket文件在哪里?
import _socket
据我所知,插座模块充当_socket
的包装。我想阅读_socket
中的一些源代码文件,以了解某些任务是如何完成的。
我在哪里可以找到_socket
或Linux机器上的任何其他共享文件?
_socket
是C扩展。 socket.py
模块包含了一些额外的信息,不需要速度提升或访问OS级别的C API。
如果你精通C语言,你可以阅读socketmodule.c
source code。
但是,最终的.so
或.dll
文件与原始源文件之间没有一对一映射。你可以grep setup.py
file的名称,而不是:
exts.append(Extension('_socket', ['socketmodule.c'],
depends = ['socketmodule.h']))
考虑到然而,有些模块是内置,编译为二进制python
的一部分;这些全部列在sys.builtin_module_names
tuple中。
可以使用__file__
属性:
In [11]: _socket.__file__
Out[11]: '/Users/andy/.miniconda3/lib/python3.5/lib-dynload/_socket.cpython-35m-darwin.so'
在Python包您还可以使用__path__
属性(目录):
In [12]: yapf.__file__
Out[12]: '/Users/andy/.miniconda3/lib/python3.5/site-packages/yapf/__init__.py'
In [13]: yapf.__path__
Out[13]: ['/Users/andy/.miniconda3/lib/python3.5/site-packages/yapf']
但是这并不告诉你在哪里可以找到C源代码。 –
很好的回答。谢谢。 –