将系统Python安装的sys.path添加到我的个人Python安装中

0 投票
2 回答
725 浏览
提问于 2025-04-17 08:05

我在系统里有一个Python安装,同时在我的个人目录下也有一个Python安装。我的个人Python在我的$PATH中优先级更高,所以我通常使用这个。但是,系统的Python安装里有一些模块,我想在我的个人Python中使用。

所以,简单来说,我想把系统Python的sys.path添加到我个人Python的sys.path中。

我查阅了一些文档,发现可以使用sitecustomizeusercustomize模块来实现这个功能。但我现在卡住了,不知道怎么把系统Python的sys.path添加到个人Python的sys.path中。

在site模块中的gensitepackages函数似乎可以计算要添加到sys.path的路径,但它使用的是PREFIXES这个全局变量,而不是把它作为参数传入,所以我不知道该怎么用。把系统Python的前缀添加到PREFIXES也不行,因为在加载自定义模块时,PREFIXES已经被用来构建路径了。

有没有什么好主意可以解决这个问题?

另外,我不确定是否应该在askubuntu/unix&linux上问这个问题。有什么意见吗?

编辑:我想我在这部分没有说清楚。我希望系统Python的路径是追加的,这样当我尝试使用那些在个人Python中不存在的模块时,它会自动回退到系统Python的模块。

2 个回答

1

Python会检查是否设置了一个叫做$PYTHONPATH的环境变量。你可以用这个变量来指定其他模块的路径。

你可以使用export PYTHONPATH="路径:位置"来设置这个变量。

1

你可以设置一个叫做 PYTHONPATH 的环境变量,或者在你个人的 Python 安装目录下的 site-packages 文件夹里,添加一个或多个 路径配置文件(.pth 文件),这些文件可以指向你想要从系统 Python 安装中添加的目录。

更新:一般来说,把不同 Python 版本的模块混在一起并不是个好主意。比如,两个 Python 版本在构建时使用的配置参数可能不同,这会导致一些 C 扩展模块不兼容,虽然它们是为系统 Python 构建的,但却在你的个人 Python 中使用。不过,如果你真的想这么做,可以通过 .pth 文件来调整路径,或者修改 site 模块。更简单、更易管理的方法是使用 virtualenv 创建一个私有的虚拟环境,使用系统 Python,然后再替换环境中的解释器;比如,可以参考 Using Virtualenv without bin/python 这一部分。

撰写回答