解決Python import .pyd 可能遇到路徑的問題
Python import .pyd文件時會搜索sys.path列表中的路徑
運行
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文件無法被搜索到。
解決方法:
用dependency walker查看xxx.pyd依賴的DLL,然后有兩種方案
(1)將所有DLL放入xxx.pyd所在目錄
(2)單獨建立存放DLL文件的目錄,比如D:\test\DLLFiles。
用os.environ['path']方法加入到環(huán)境變量PATH中:
os.environ['path'] += ';D:\\test\\DLLFiles'
補充:Python import / pyd / dll
使用Python import 模塊時,
先會在模塊的搜索path里依次搜索(前面會覆蓋之后出現(xiàn)的同名模塊),次序為:
1. 程序的主目錄(交互模式下當(dāng)前的工作目錄或 腳本文件所在的目錄)
2. 環(huán)境變量 PYTHONPATH目錄(如果已經(jīng)進(jìn)行了設(shè)置)
3. 標(biāo)準(zhǔn)鏈接庫目錄(標(biāo)準(zhǔn)庫模塊所在目錄 C:\Python27或C:\Python27\Lib\site-packages 目錄中)
4. 任何放在標(biāo)準(zhǔn)鏈接庫目錄中的.pth文件中記錄的目錄
(1) 當(dāng)出現(xiàn)諸如:
no module 錯誤時, 說明無法找到對應(yīng)的 .pyd 文件(Python中的動態(tài)鏈接庫文件),
其可能的原因是:
a. 該 vtkCommonPython.pyd 文件不在搜索目里。(需拷入到搜索目錄下 或 將其目錄設(shè)置到PYTHONPATH中)
b. 該 module的 名字有問題, 比如輸錯了;或 應(yīng)該為Debug版(如應(yīng)該為 vtkCommonPython_d.pyd, Debug版的都需在 Python_d.exe中執(zhí)行,且都需加_d后綴)
(2)當(dāng)出現(xiàn)諸如:
DLL load failed 錯誤時, 說明 可以找到該 模塊對應(yīng)的.pyd文件,但無法找到該 .pyd文件 對應(yīng)的 dll文件時。
解決辦法:
將對應(yīng)的同名.dll文件路徑放到環(huán)境變量PATH中。(或?qū)⒃?dll文件放到PATH能找到的目錄下)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
Python多進(jìn)程編程multiprocessing代碼實例
這篇文章主要介紹了Python多進(jìn)程編程multiprocessing代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-03-03Python獲取遠(yuǎn)程文件大小的函數(shù)代碼分享
這篇文章主要介紹了Python獲取遠(yuǎn)程文件大小的函數(shù)代碼分享,需要的朋友可以參考下2014-05-05Django自定義模板過濾器和標(biāo)簽的實現(xiàn)方法
這篇文章主要介紹了Django自定義模板過濾器和標(biāo)簽的實現(xiàn)方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-08-08Python使用sys.exc_info()方法獲取異常信息
這篇文章主要介紹了Python使用sys.exc_info()方法獲取異常信息,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-07-07基于MTCNN/TensorFlow實現(xiàn)人臉檢測
這篇文章主要為大家詳細(xì)介紹了基于MTCNN/TensorFlow實現(xiàn)人臉檢測,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-05-05python+pygame實現(xiàn)坦克大戰(zhàn)小游戲的示例代碼(可以自定義子彈速度)
這篇文章主要介紹了python+pygame實現(xiàn)坦克大戰(zhàn)小游戲---可以自定義子彈速度,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08