在Python的导入搜索路径中添加单个模块?

时间:2019-03-23 17:26:42

标签: python python-3.x virtualenv python-import pythonpath

如果我将PYTHONPATH设置为某个路径/path/to/modules/,则该路径将附加到sys.path,并且我可以导入/path/to/modules/中包含的模块/软件包。

但是,如果我只想访问单个模块/软件包,那么将/path/to/modules/mymod.py/path/to/modules/mypackage/添加到sys.path上是无效的。

有没有办法仅将单个模块/软件包添加到导入搜索路径,而不是添加整个父目录?

我之所以问是因为我需要从虚拟环境中导入安装在/usr/lib/python3/dist-packages/下的单个软件包,而我不想让虚拟环境访问该路径下安装的所有模块/软件包。 (该软件包的构建过程很复杂,无法轻松安装到虚拟环境中。)

我已经读过https://stackoverflow.com/a/67692/,但我想知道是否有可能在导入搜索路径中实际包含该软件包,以便可以正常导入该软件包(及其包含的模块)。

1 个答案:

答案 0 :(得分:0)

没有这样的方法。如果要导入模块,则必须添加它 父目录到sys.path。但是您可以稍后将其删除:

sys.path.append('/usr/lib/python3/dist-packages/')
import mypackage
del sys.path[-1]