vs找不到dll_零基础学习Python_绝对VS相对

Python学习笔记

ba5f89a54e685c68291e82131adef02a.png

公众号搜索--树莓派OpenCV学舍

137015cf84d9c51b424dcffc2d1a4b7b.png

绝对路径VS 相对路径

今天笔者在研究某个品牌工业相机的SDK,在尝试着运行一段代码时,系统突然显示报错了。具体看下图:

da431e01e5c5ba7d59709c09a2b4318a.png

明明是一段示例程序,怎么会报错呢?仔细看上图的提示信息,是因为程序中找不到MvCameraControl.dll(或者相关依赖)。于是我打开SDK  Runtime,发现是有这个动态链接库滴。

74f1cb5ca4415bc5f4224202fd7a74af.png

807cf7a50e80307e3876a2e5ab5a7cc0.png

既然手动找得到这个文件,那就说明只是程序找不到罢了,问题不大。继续找到程序中提示错误的代码段,见下图:

0951c7e8453b136b6577b8f6ef720f90.png

从上图中可以看出,此文件是没有列出绝对路径的。如果这个动态链接库在程序所处的文件夹中,系统是不会报错的;可是从前一张截图可以看出,并非如此。所以此处,我们需要给出完整的路径才可。代码修改如下,问题解决。

eaae91670d33287b3857e2c0144e68a9.png

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

当然,最好就不要有相同名字的文件存在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值