如果我将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/,但我想知道是否有可能在导入搜索路径中实际包含该软件包,以便可以正常导入该软件包(及其包含的模块)。
答案 0 :(得分:0)
没有这样的方法。如果要导入模块,则必须添加它
父目录到sys.path
。但是您可以稍后将其删除:
sys.path.append('/usr/lib/python3/dist-packages/')
import mypackage
del sys.path[-1]