我安装了两个Python环境。 EnvA是我的默认最新环境,EnvB是EnvA中使用的某些软件包的旧版本。 是否可以从使用EnvA解释器的程序中启动基于EnvB的代码?
作为一个实际例子:
我有一个pyqt5 GUI用于转换我的* .ui文件,它基本上调用pyuic5
shell命令。
我想添加将.ui转换为pyqt4代码的选项,这是不可能的,因为PyQt4
库在此环境中被PyQt5
替换。
我的主程序是否可以使用不同的python环境在子进程/解释器/ ..中执行脚本,并在脚本完成其工作后返回?
答案 0 :(得分:1)
不是真的推荐,但你可以通过修改sys.path
来做到这一点。只需在sys.path
中添加一个来自EnvB的包的路径,Python就会在进入EnvA版本之前获取它。
您还可以使用importlib
专门从完全限定的路径导入。另一个answer有一些很好的例子,但基本上它看起来像这样:
spec = importlib.util.spec_from_file_location("module", "path/to/file.py")
module = importlib.util.module_from_spec(spec)