Python路径:重用Python模块

3 投票
3 回答
1716 浏览
提问于 2025-04-15 19:40

我写了一个小的数据库访问模块,这个模块在很多程序中都被广泛使用。

为了备份和版本管理,我把我的代码放在一个单独的目录树里,路径是/projects,所以这个模块应该放在这个目录树中,比如放在/projects/my_py_lib/dbconn.py

我想简单地配置Python,让它自动在/projects/my_py_lib这个目录下搜索模块(当然,任何子目录里都应该放一个__init__.py文件)。

在Ubuntu系统下,最好的方法是什么呢?

谢谢,

亚当

3 个回答

0

另一种选择是在 /usr/lib*/python*/site-packages/ 目录下创建一个软链接:

ln -s /projects/my_py_lib /usr/lib*/python*/site-packages/

这样一来,所有的Python程序都能看到这个项目,而且任何更改也会立即生效。

不过主要的缺点是,如果你不在切换用户之前自己编译文件,最终会有一些 *.pyc 文件是由root用户或其他用户拥有的。

2

在Linux系统上,这个目录会自动添加到你的sys.path中,适用于pythonN.M版本。

~/.local/lib/pythonN.M/site-packages/

所以你可以把你的包放在这里,针对你使用的每个Python版本。

你需要为每个Python版本准备一份,否则每次用不同的Python版本导入模块时,.pyc文件都会被重新编译。

这样做还可以让你更精细地控制,如果某个模块只适用于你安装的某些Python版本。

如果你创建这个文件

~/.local/lib/pythonN.M/site-packages/usercustomize.py

每次启动Python解释器时,它都会被导入。

8

你可以在你的 .bashrc 文件中添加一个 PYTHONPATH 环境变量。比如:

export PYTHONPATH=/projects/my_py_lib

撰写回答