pyd 和 pyc 究竟是個什么東西?
? ? 點擊上方?月小水長?并?設(shè)為星標(biāo),第一時間接收干貨推送
寫在開篇

pyd?特點及生成方式
from distutils.core import setupfrom?Cython.Build?import?cythonizesetup(ext_modules=cythonize("demo.py"))
然后在命令行或終端 cd 到這個目錄下,輸入一行命令之
python setup.py build_ext --inplace當(dāng)前目錄下就會生成一個? build 文件夾,一個 .c 文件,還有我們的主人翁?.pyd 文件,自動生成的名字并不是 demo.pyd,而是?
demo.cp36-win_amd64.pyd這個 cp36 和 win_amd64 視 python 版本和操作系統(tǒng)而定。我們需要把它改成 demo.pyd,注意,是只能改成 demo.pyd;改成其他任何名字都不行,使用時會 import error。使用該 pyd 方式如下:
import demofrom?demo?import?{{類名|函數(shù)名}}
pyc?特點及生成方式
而我們安裝的 python 目錄下有許多 pyc 文件,這個 c 是編譯 compile 過的意思,可以使用 python 解釋器編譯 py 文件 成 pyc 字節(jié)碼文件。使用 pyc 可以加快程序的加載速度,而不能加快程序的實際執(zhí)行速度,這就是解釋為什么我們安裝 python 目錄很多第三方庫下是 pyc 文件的原因,因為它可以使得 import 一些第三方庫的速度加快。由于 .pyc 文件是編譯好的字節(jié)碼,它是獨立于平臺的,因此可以在不同體系結(jié)構(gòu)的計算機(jī)之間共享。其實還有一個和 pyc 類似的字節(jié)碼文件 pyo,一般 pyo 替代未經(jīng)優(yōu)化而創(chuàng)建的 pyc 文件,這里就不展開了~
使用下面一行命令就能將當(dāng)前目錄下的所有?py 文件打成 pyc。
python?-m?compileall?./pyc 的改名規(guī)則和 import?使用同 pyd !!!
還有一點需要注意的是,由于 pyc 是由特定的 python 解析器生成的,它雖然能跨平臺,但是不能跨版本,也只能運行在特定的 Python 版本上。如果 Python 版本不對,它會報 ImportError: bad magic number 錯誤。

Pycharm 文件目錄默認(rèn)不索引pyc?
?pyc 文件放到 Pycharm 中并不會顯示它的存在?,但是確實實在存在于我們的文件夾之中的。
Pycharm 中文件目錄

文件瀏覽器中文件目錄
這是為什么呢?我猜測是 Pycharm 把 pyc exclude 排除顯示了,上圖 Pycharm 的 External Libraries 就是我們的 python 解析器,它有許許多多 pyc,如果全部顯示。那么 index 索引將會非常大,嚴(yán)重會導(dǎo)致電腦卡死。
但是 pyd 就沒有這種問題~
如不足之處歡迎批評指正~
