一尘不染

Python:相对于当前正在运行的脚本添加到sys.path的最佳方法

python

我有一个充满脚本的目录(假设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平台,但可以保持干净。


阅读 163

收藏
2020-12-20

共1个答案

一尘不染

如果您不想编辑每个文件

  • 安装你的资料库像一个正常的Python libray

  • 设置PYTHONPATH为您的lib

或者如果您愿意在每个文件中添加一行,则在顶部添加导入语句,例如

import import_my_lib

保持import_my_lib.py在bin中,import_my_lib可以正确地将python路径设置为lib您想要的任何内容

2020-12-20