Python怎样得到资源文件的绝对路径

Python怎样得到资源文件的绝对路径,第1张

路径有两种,相对路径和绝对路径。 对于Unix-Like系统来说,绝对路径就是以/开头的路径。 相对路径就是不以/开头的路径。

其实, *** 作系统中实际只有一种路径,那就是绝对路径。 相对路径,只是程序自己帮我们修改为绝对路径了。

*** 作系统的程序运行器利用环境变量,为我们把相对路径生成为绝对路径。getcwd()函数用于得到当前进程的当前工作路径。也就是相对路径的起始点。

在Python中,可以使用os.chdir函数切换当前工作路径。

当前工作路径,是程序执行时所在的路径。 我们在哪个目录下执行程序,当前路径就是哪一个目录。

我们常常需要在python中执行一些源码目录下的文件。如,我们可能需要用eval动态执行一个python源文件。或者copy一些配置文件到目标系统的路径下。此时,我们无法知道这些文件的绝对路径,因为我们不能预知用户会把我们的程序安装到哪一个目录下。

我们也不能依赖于当前工作路径。因为用户很可能不在我们的源码目录下执行我们的程序。

那么,此时我们如何得到源码目录下文件的绝对路径呢?

我是这样做的:

ABSPATH=None

if __name__ == '__main__':

ABSPATH=os.path.abspath(sys.argv[0])

ABSPATH=os.path.dirname(ABSPATH)+"/"

print ABSPATH

方法一:函数添加

1 import sys

2 查看sys.path

3 添加sys.path.append("c:\\")

方法二:修改环境变量

w用户可以修改系统环境变量PYTHONPATH

方法三:增加.pth文件,推荐!

在site-packages添加一个路径文件,如mypkpath.pth,必须以.pth为后缀,写上你要加入的模块文件所在的目录名称就是了。

1 windows

c:\python27\site-packages

# 我们的学员把pth文件直接放在c:\python27

# (或其他python安装目录)目录下测试也是有效的

# 2015.9.23

2 linux(ubuntu)

/usr/local/lib/python2.7/dist-packages (note by shanql, 我是放在这个目录下有效的,所添加的目录一定要存在,不存在则会不成功)

2 linux(redhat)

/usr/lib/python2.7/site-packages

本人python菜鸟一枚,在学习python过程中,经常要按照教程编写一些模块和函数练手,刚开始只是在python shell中编写,但是如果出错就会非常悲剧,又要从头开始编,而且重启python后也要重新编写模块。所以希望能像bash编程那样将脚本路径添加到环境变量中,这样修改起来也方便。以下内容均来源于网络及本菜鸟。

摘要:本文叙述了如何在linux环境下添加python模块的路径,第1部分介绍了如何查看python环境变量,第2部分介绍了如何将脚本放入python自带的环境变量目录中,第3部分介绍了如何将目录放入python的环境变量中重启python失效,第4部分介绍了如何为python添加永久环境变量目录。这些方法可以使模块的修改和重复使用更加方便,不用重复输入。

​1、首先,可以用python中的内建模块sys来查看python的环境变量。

​这些目录都是python的环境变量。

2.接下来本菜鸟尝试一下如果将提前写好的python脚本放入这些目录中,能不能在python中使用。别问为什么跑题,本菜就想试一试^ -^。

选择/usr/local/lib/python2.7/dist-packages/pip-7.1.2-py2.7.egg这个目录,脚本名为my_module.py,里面只有一个名为c_to_f的函数,用来计算从摄氏温度转换为华氏温度。

​可以看到,脚本已经位于刚开始选定的的目录下了。

我们现在来看看,在python中导入这个模块。并按照“模块.函数”的格式使用函数。

​可以看到,导入模块成功,其中的c_to_f函数也正确使用,10摄氏度=50华氏度。或者你在确定函数名不重名的前提下,可以from my_module import c_to_f,这样就可以直接使用函数c_to_f,而不需要模块名作为前缀。

实验成功,将脚本导入python自带的环境变量目录中是有效的​,如果之前运行了python,再导入后并不用重启python就可以导入模块。

3.接下来​我们回归正题,如何自定义python环境变量目录。最直接的想法是把目录加到刚才的python环境变量中。可以使用sys.path.append('/.../....')。

​然后再次查看path路径,发现"/home/sh/python"目录确实加入了。并且也可以使用。但是这种方法一旦退出python,刚才新加的目录就消失了。

4.接下来介绍一种一劳永逸的方法,就是直接修改系统变量。

export PYTHONPATH=$PYTHONPATH:/..../..../​,对,没错,直接在shell中敲这一行,目录是你自定义的目录,然后打开python,import my_module,你就愉快的可以使用自定义的模块了。

http://blog.sina.com.cn/s/blog_959cf80d0102vx3j.html


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11903421.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-19
下一篇2023-05-19

发表评论

登录后才能评论

评论列表(0条)

    保存