Python:相对于当前运行脚本,最佳添加到sys.path的方法
我有一个文件夹里放着很多脚本(比如说 project/bin
)。我还有一个库放在 project/lib
,我希望这些脚本能自动加载这个库。通常我在每个脚本的开头都会加上这样的代码:
#!/usr/bin/python
from os.path import dirname, realpath, sep, pardir
import sys
sys.path.append(dirname(realpath(__file__)) + sep + pardir + sep + "lib")
# ... now the real code
import mylib
这样做有点麻烦,看起来也不太美观,而且每个文件都得复制粘贴一遍。有没有更好的方法呢?
其实我希望能有一种更简单的方法,比如这样:
#!/usr/bin/python
import sys.path
from os.path import pardir, sep
sys.path.append_relative(pardir + sep + "lib")
import mylib
甚至更好的是,能在我的编辑器(或者其他有权限的人)在整理代码时,不会因为重新排序导入的内容而出问题:
#!/usr/bin/python --relpath_append ../lib
import mylib
虽然这样在非posix平台上可能不太适用,但至少能让代码看起来更整洁。
12 个回答
49
我正在使用:
import sys,os
sys.path.append(os.getcwd())
166
我用的是这个:
import os, sys
sys.path.append(os.path.join(os.path.dirname(__file__), "lib"))
36
如果你不想一个个去修改每个文件的话,
- 可以像正常安装Python库那样安装你的库
或者 - 把
PYTHONPATH
设置为你的lib
目录
如果你愿意在每个文件的顶部加一行代码,可以添加一个导入语句,比如:
import import_my_lib
把import_my_lib.py
放在bin目录下,这样import_my_lib
就能正确设置Python路径到你想要的lib
目录