解決Python import .pyd 可能遇到路徑的問(wèn)題
Python import .pyd文件時(shí)會(huì)搜索sys.path列表中的路徑
運(yùn)行
import xxx.pyd
1. 'ImportError: No module named xxx'
可能是xxx.pyd所在路徑不在sys.path中。
解決方法:
import之前用sys.path.append()方法加入xxx.pyd所在路徑,確定當(dāng)前路徑推薦用os.path.realpath('.')。
2. ‘ImportError: DLL load failed: 找不到指定的程序'
可能是xxx.pyd調(diào)用了其他的DLL文件,且其調(diào)用的DLL文件無(wú)法被搜索到。
解決方法:
用dependency walker查看xxx.pyd依賴(lài)的DLL,然后有兩種方案
(1)將所有DLL放入xxx.pyd所在目錄
(2)單獨(dú)建立存放DLL文件的目錄,比如D:\test\DLLFiles。
用os.environ['path']方法加入到環(huán)境變量PATH中:
os.environ['path'] += ';D:\\test\\DLLFiles'
補(bǔ)充:Python import / pyd / dll
使用Python import 模塊時(shí),
先會(huì)在模塊的搜索path里依次搜索(前面會(huì)覆蓋之后出現(xiàn)的同名模塊),次序?yàn)椋?/p>
1. 程序的主目錄(交互模式下當(dāng)前的工作目錄或 腳本文件所在的目錄)
2. 環(huán)境變量 PYTHONPATH目錄(如果已經(jīng)進(jìn)行了設(shè)置)
3. 標(biāo)準(zhǔn)鏈接庫(kù)目錄(標(biāo)準(zhǔn)庫(kù)模塊所在目錄 C:\Python27或C:\Python27\Lib\site-packages 目錄中)
4. 任何放在標(biāo)準(zhǔn)鏈接庫(kù)目錄中的.pth文件中記錄的目錄
(1) 當(dāng)出現(xiàn)諸如:

no module 錯(cuò)誤時(shí), 說(shuō)明無(wú)法找到對(duì)應(yīng)的 .pyd 文件(Python中的動(dòng)態(tài)鏈接庫(kù)文件),
其可能的原因是:
a. 該 vtkCommonPython.pyd 文件不在搜索目里。(需拷入到搜索目錄下 或 將其目錄設(shè)置到PYTHONPATH中)
b. 該 module的 名字有問(wèn)題, 比如輸錯(cuò)了;或 應(yīng)該為Debug版(如應(yīng)該為 vtkCommonPython_d.pyd, Debug版的都需在 Python_d.exe中執(zhí)行,且都需加_d后綴)
(2)當(dāng)出現(xiàn)諸如:

DLL load failed 錯(cuò)誤時(shí), 說(shuō)明 可以找到該 模塊對(duì)應(yīng)的.pyd文件,但無(wú)法找到該 .pyd文件 對(duì)應(yīng)的 dll文件時(shí)。
解決辦法:
將對(duì)應(yīng)的同名.dll文件路徑放到環(huán)境變量PATH中。(或?qū)⒃?dll文件放到PATH能找到的目錄下)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
Python使用SQLAlchemy進(jìn)行復(fù)雜查詢(xún)的操作代碼
SQLAlchemy 是 Python 生態(tài)系統(tǒng)中非常流行的數(shù)據(jù)庫(kù)處理庫(kù),它提供了一種高效、簡(jiǎn)潔的方式與數(shù)據(jù)庫(kù)進(jìn)行交互,在數(shù)據(jù)驅(qū)動(dòng)的應(yīng)用程序中,復(fù)雜查詢(xún)是必不可少的,本文將通過(guò)一些常見(jiàn)的示例介紹如何使用 SQLAlchemy 編寫(xiě)復(fù)雜查詢(xún),需要的朋友可以參考下2024-10-10
Python中如何使用pypandoc進(jìn)行格式轉(zhuǎn)換操作
這篇文章主要介紹了Python中如何使用pypandoc進(jìn)行格式轉(zhuǎn)換操作,pypandoc是一個(gè)強(qiáng)大的文檔轉(zhuǎn)換工具,它可以將各種標(biāo)記語(yǔ)言轉(zhuǎn)換為不同的格式,支持多種輸入和輸出格式,并允許用戶(hù)添加自定義樣式、模板和過(guò)濾器2021-06-06
python自動(dòng)發(fā)郵件總結(jié)及實(shí)例說(shuō)明【推薦】
python發(fā)郵件需要掌握兩個(gè)模塊的用法,smtplib和email,這倆模塊是python自帶的,只需import即可使用。這篇文章主要介紹了python自動(dòng)發(fā)郵件總結(jié)及實(shí)例說(shuō)明 ,需要的朋友可以參考下2019-05-05
Python?matplotlib如何簡(jiǎn)單繪制不同類(lèi)型的表格
通過(guò)Matplotlib,開(kāi)發(fā)者可以?xún)H需要幾行代碼,便可以生成繪圖,直方圖,功率譜,條形圖,錯(cuò)誤圖,散點(diǎn)圖等,下面這篇文章主要給大家介紹了關(guān)于Python?matplotlib如何簡(jiǎn)單繪制不同類(lèi)型表格的相關(guān)資料,需要的朋友可以參考下2022-07-07
python自動(dòng)化測(cè)試之異常及日志操作實(shí)例分析
這篇文章主要介紹了python自動(dòng)化測(cè)試之異常及日志操作,結(jié)合實(shí)例形式分析了python自動(dòng)化測(cè)試中的異常捕獲與日志記錄相關(guān)操作技巧,需要的朋友可以參考下2019-11-11
Pycharm運(yùn)行加載文本出現(xiàn)錯(cuò)誤的解決方法
今天小編就為大家分享一篇Pycharm運(yùn)行加載文本出現(xiàn)錯(cuò)誤的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-06-06
Python中內(nèi)存管理機(jī)制與優(yōu)化技巧分享
這篇文章主要來(lái)和大家簡(jiǎn)單聊一聊Python中的內(nèi)存管理,從而可以幫助大家寫(xiě)出更高效,優(yōu)化內(nèi)存占用的 Python 代碼,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-04-04

