Python:使用来自不同环境的包

时间:2017-05-17 14:24:21

标签: python

我安装了两个Python环境。 EnvA是我的默认最新环境,EnvB是EnvA中使用的某些软件包的旧版本。 是否可以从使用EnvA解释器的程序中启动基于EnvB的代码?

作为一个实际例子: 我有一个pyqt5 GUI用于转换我的* .ui文件,它基本上调用pyuic5 shell命令。 我想添加将.ui转换为pyqt4代码的选项,这是不可能的,因为PyQt4库在此环境中被PyQt5替换。 我的主程序是否可以使用不同的python环境在子进程/解释器/ ..中执行脚本,并在脚本完成其工作后返回?

1 个答案:

答案 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)