_socket文件在哪里?

时间:2016-05-27 04:58:19

标签: python sockets

我正在查看内置库模块的python,例如在socket.py中我看到了这一行:

import _socket

我知道套接字模块充当_socket的包装器。我想阅读_socket中的一些源代码文件,看看如何完成某些任务。

在哪里可以在Linux机器上找到_socket或其他任何共享文件?

2 个答案:

答案 0 :(得分:9)

_socket是C扩展名。 socket.py模块包含了一些不需要提高速度或访问操作系统级别C API的其他信息。

如果您精通C语言,则可以阅读socketmodule.c source code

最终.so.dll文件与原始源文件之间没有一对一的映射。您可以改为setup.py file代替名称:

exts.append( Extension('_socket', ['socketmodule.c'],
                       depends = ['socketmodule.h']) )

但请注意,某些模块是内置,编译为python二进制文件的一部分;这些都列在sys.builtin_module_names tuple

答案 1 :(得分:1)

您可以使用__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']
相关问题