如何刷新 sys.path?

Posted

技术标签:

【中文标题】如何刷新 sys.path?【英文标题】:How to refresh sys.path? 【发布时间】:2014-10-12 15:25:10 【问题描述】:

我在以用户身份执行脚本的过程中安装了一些软件包。这些包是第一个用户包,所以python在脚本运行之前没有将~/.local/lib/python2.7/site-packages添加到sys.path。我想导入那些已安装的软件包。但我不能,因为他们不在sys.path

如何刷新sys.path

我使用的是 python 2.7。

【问题讨论】:

【参考方案1】:

正如What sets up sys.path with Python, and when? 中所述,sys.path 是在内置 site.py 模块的帮助下填充的。

所以你只需要重新加载它。您不能一步完成,因为您的命名空间中没有 site。总结一下:

import site
from importlib import reload
reload(site)

就是这样。

【讨论】:

这将解决大部分问题。如果您删除或重命名了文件,请注意删除旧的字节码,否则,它将被 Python 使用。如果您使用的是 Python 3(我知道问题是关于 2.7 但我最终在这里寻找 3 的解决方案),那么请记住使用 importlib.invalidate_caches() 或可能使用文件系统的旧内容。 【参考方案2】:

最好将其直接添加到您的sys.path 中:

import sys
sys.path.append("/your/new/path")

或者,如果需要先找到:

import sys
sys.path.insert(1, "/your/new/path")

【讨论】:

以上是关于如何刷新 sys.path?的主要内容,如果未能解决你的问题,请参考以下文章

python如何加载sys.path中的所有值?

如何调用另一个python文件中的代码

Python sys.path详细介绍

python如何实现相对导入

python打包exe后如何获取自身的执行路径

如何导致 Python 3.5 崩溃?