Python符号链接路径该如何处理这类问题,python符号链接路径,比如有一个python程
Python符号链接路径该如何处理这类问题,python符号链接路径,比如有一个python程
比如有一个python程序test.py,它调用了本目录下的B.py文件,可用如下语句:
os.system('python B.py')
这时我创建了test.py的一个符号链接到其他目录(比如说/usr/local/bin),这时通过符号链接运行程序时会因为路径问题找不到B.py而出错。python中应该如何处理这种类型的问题?
另外,linux中的/usr/bin下有很多的程序都是符号链接,它们是如何处理这种路径问题的?比如说mysql,我将其放在/opt/目录下,并将其可执行程序链接到/usr/bin,那么它是靠什么方法找到位于/opt/下的配置文件等文件的?
如果软链接,os.system('python B.py')应该是可以找到B.py的吧。类似的我以前一个小项目,最开始写了一个自动部署脚本,就是直接软链接入口文件到/usr/bin 目录。你可以直接在 test.y 文件输出绝对路径测试看看。
不好意思,答案疏忽了,的确 os.system('python B.py') 会在链接目录去寻找B.py, 此时 B.py 的路径为 os.path.split(os.path.realpath(__file__))[0] + B.py。这其实就是 B.py 的绝对路径。
你完全弄错了。
os.system('python B.py')
要能够正确地执行,B.py 应当位于当前工作目录,即 os.getcwd() 的返回值下。除非你改变了工作目录(os.chdir(path)),否则,你在哪个目录里运行你的 test.py,它就会在哪个目录里寻找 B.py。
你可以先改变工作目录。比如下边的代码改变工作目录到脚本本身所在的目录,跟随所有软链接:
mypath = os.path.abspath(os.path.dirname(os.path.realpath(__file__)))os.chdir(mypath)
Linux 下很多程序是在编译期将一些路径硬编码进可执行文件的。
编橙之家文章,
相关内容
- 数据库操作完成后需要关闭么,数据库操作完成关闭
- python 3.6 list(map())相关回答,python3.6,map(lambda x
- Win平台Python cmd实现自动化输入Y/N思路,pythoncmd,WARNING
- 在python3.X下用map同zip能做出一样源码效果吗?,python
- python元组格式化成字符串遇到typeError问题,pythontypeer
- MAC下python2.7.8 IDLE运行返回效果的问题,python2.7.8idle,并
- 自己动手写python爬虫,参考什么学习资料适合,python爬虫
- transform: rotate样式失效了,transformrotate,DOM结构 <u
- 类似美元$这个符号pyCharm2.0里怎么输入不好用呢,美元
- python报错提示输出的疑问,python报输出疑问,类似这样的
评论关闭