比如有一个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/
下的配置文件等文件的?
你完全弄错了。
要能够正确地执行,
B.py
应当位于当前工作目录,即os.getcwd()
的返回值下。除非你改变了工作目录(os.chdir(path)
),否则,你在哪个目录里运行你的test.py
,它就会在哪个目录里寻找B.py
。你可以先改变工作目录。比如下边的代码改变工作目录到脚本本身所在的目录,跟随所有软链接:
Linux 下很多程序是在编译期将一些路径硬编码进可执行文件的。