如何仅针对特定Python版本执行模块导入操作?
解决方案
当然可以,你可以通过判断Python版本实现条件导入,下面是几种实用的实现方式:
方法1:通过sys.version_info做版本判断
在another_file.py中加入版本检查,仅在Python3及以上环境导入file.py:
import sys if sys.version_info >= (3, 0): from file import YourClass else: # Python2环境下可定义占位类,避免后续代码因找不到类报错 class YourClass: pass
这样Python2环境运行时不会加载不兼容的模块,同时保证代码结构一致,避免NameError。
方法2:简化版本的条件赋值
如果Python2环境下不需要该类的任何实现,也可以直接赋值为None,后续代码通过判断类是否存在来分支执行:
import sys if sys.version_info >= (3, 0): from file import YourClass else: YourClass = None
针对Bazel测试的额外提示
因为你要支持Bazel的Python2测试,可在BUILD文件中单独配置:给Python2测试目标移除对file.py的依赖,只让Python3相关目标关联该模块,从构建层面彻底隔离版本兼容问题。
内容的提问来源于stack exchange,提问作者jinkins
相关产品推荐
相关产品推荐

