vs找不到dll_零基础学习Python_绝对VS相对
Python學習筆記
公眾號搜索--樹莓派OpenCV學舍
絕對路徑VS 相對路徑
今天筆者在研究某個品牌工業相機的SDK,在嘗試著運行一段代碼時,系統突然顯示報錯了。具體看下圖:
明明是一段示例程序,怎么會報錯呢?仔細看上圖的提示信息,是因為程序中找不到MvCameraControl.dll(或者相關依賴)。于是我打開SDK? Runtime,發現是有這個動態鏈接庫滴。
既然手動找得到這個文件,那就說明只是程序找不到罷了,問題不大。繼續找到程序中提示錯誤的代碼段,見下圖:
從上圖中可以看出,此文件是沒有列出絕對路徑的。如果這個動態鏈接庫在程序所處的文件夾中,系統是不會報錯的;可是從前一張截圖可以看出,并非如此。所以此處,我們需要給出完整的路徑才可。代碼修改如下,問題解決。
Python里的路徑分相對路徑和絕對路徑。
絕對路徑
絕對路徑好理解,我們以Cat.py來舉例子。
這就是它的絕對路徑:"E:/Python/Lib/site_packages/Cat.py"
相對路徑
相對路徑呢,就是相對于Cat.py的路徑。下面來看幾個例子:
"Dog1.py",對應: "E:/Python/Lib/site_packages/Dog1.py"
跟Cat.py在同一個文件夾里。
"set/Dog2.py",對應: "E:/Python/Lib/site_packages/set/Dog2.py"
跟Cat.py在同一個文件夾里的set文件夾里的文件。
"./Dog3.py",對應:"E:/Python/Lib/site_packages/Dog3.py"
跟Cat.py在同一個文件夾里。
"../Dog4.py",對應: "E:/Python/Lib/Dog4.py"Cat.py上一級文件夾里的文件。
也就是說除了第四個是上一級文件夾,前三個都是當前文件夾。
通過總結可以發現,當你要導入的文件在和你的當前文件在同一個目錄時,你直接導入這個文件名就好了。
? 當你要導入的文件或者目錄不和你的當前文件同目錄時,你需要跳到這個你要導入文件的父級目錄,然后一級一級的用點號連接走過的目錄或者文件,然后就可以了。至于要怎么跳到這個這個父級目錄。比較通用的就是,將父級目錄加入系統路徑,然后用點號一級一級的尋找,直到到達你要導入的模塊。
例如:有一個文件夾/home/a, 里面有個模塊叫b.py, 我怎么把他import到程序里?
import sys;
sys.path.append(“/home/a/”)
import b
接下來說一說from __future__ import absolute_import
這句代碼的作用是加入 絕對引用這個特性。
假設你的工程目錄為:
.
|-- __init__.py
|-- main.py
|-- xxx.py
|-- config
在工程文件目錄 的main.py 中寫 import xxx 會引用當前的文件中的 xxx.py,但是你想忽略當前文件夾的 xxx.py 而引用系統中的 xxx.py,就需要在前面加 from __future__ import absolute_import,這時候引用工程文件的 xxx.py 就需要 from pro import xxx
當然,最好就不要有相同名字的文件存在
總結
以上是生活随笔為你收集整理的vs找不到dll_零基础学习Python_绝对VS相对的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python释放变量内存_Python尚
- 下一篇: linux 磁盘检测卡主_Linux启动