我期待通過內置的庫模塊蟒蛇,例如在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源代碼。 –
很好的回答。謝謝。 –