python的路径linux_最近遇到的大坑系列-3-LINUX下PYTHON相对路径使用

2021的第一天,大家好,新年快乐!

新年了,学习不能停!还是继续讲LINUX下PYTHON的一个坑。

通过文件夹管理一个python项目的时候,本来你是想通过文件夹让各个文件更加有序的,但是最后在实际的linux中调用程序,import各个库的时候,你就会发现有很多的坑。

自己在这边记录一下,防止以后继续掉坑。

针对库文件的引用,直接用下面的方法操作。

import sys

sys.path.append('xxx')

引入sys库,然后在sys路径里面增加你需要增加库的绝对路径。

方便,简单,直接就能用,比你用各种 . 或者 .. 来做相对路径再引入方便多了!

针对程序中调用的config,或者log,或者其他文件。

调用此类文件的时候,和你在哪一级的路径下面执行主程序有关系!

比如我在 /var/project/ 路径下,有一个 main.py 的文件,main.py 的文件用 import 了一个项目子路径module文件夹下面的一个sql库(库的绝对路径为/var/project/module/sql.py),库里面又调用了一个module文件夹的下面的sql_base.config的文件。

这个时候,虽然你的main.py文件中,已经按照我上面的要求,import了sys,并且已经将/var/project/module/的路径append了,这个时候,你引入sql这个库是没问题的了,但是你还是会发生报错,sql库在调用sql_base这个文件的时候报错,因为如果你在程序中调用的时候,没有写路径的话,他默认就是当成你执行程序的时候路径下面,不管你执行的是另外的主程序,还是当前的程序。

这个时候,和上面库一样的情况,还是建议在调用配置文件的时候,直接写全绝对路径,这样就没问题了。

这个时候又有人问了,那我开发机是windows,生产机是linux,绝对路径不同会导致我在测试和执行程序的时候很麻烦,咋办?

网上查到了一个

work_dir = os.path.dirname(os.path.abspath(__file__))

CONF_FILE = os.path.join(work_dir,'server.conf')

在调用conf的文件中,加入这两段代码,先用work_dir获取到程序实际执行时的绝对路径,再用join拼接出conf_file的绝对路径。

综上,分析了两种比较常用的场景,我们的方式还是尽量简单偷懒,直接用绝对路径来搞定,相比较相对路径这个坑,这个方法是最简单方便的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值