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

154 投票
12 回答
321030 浏览
提问于 2025-04-17 09:11

我有一个文件夹里放着很多脚本(比如说 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目录

撰写回答