我是一个相当大的Python包的主要罪魁祸首,它在我们的组织内部使用。我正在为Python3编写包;对于我自己控制的代码来说,这是相当可行的--但是有许多“在野外”的脚本,如果/当组织默认解释器被拉到3.x时,这些脚本就会中断。典型情况如下:
一些我没有控制的随机脚本:
#!/usr/bin/env python # By manipulating the environment I will ...
# ... eventually switch this to pick up python3
import company.package # This is Python3 safe.
...
print "This - will fail hard"我想要做的(如果可能的话)是在我控制的"company.package“代码中插入一些全局警告指令,这样用户就可以在全局解释器被拉到Python3之前得到警告。这个是可能的吗?
发布于 2013-10-06 17:10:31
您可以检测脚本何时在Python2.x中运行,并发出如下所示的更新警告:
import warnings
import sys
if sys.version_info < (3,0):
warnings.warn("company.package will be ported to Python 3 soon. Make sure that your script is Py3k-safe!")不幸的是,除了基于静态分析的人工检查(例如使用Python3工具)和/或广泛的单元测试之外,无法确保Python3在2to3中顺利运行。
编辑:移植到Python3不仅是语法问题,而且涉及模块重命名(比如urllib,它被拆分,或者cStringIO)和概念更改(比如字节数组/字符串的区别)。没有import的魔力来验证这一点。
https://stackoverflow.com/questions/19211466
复制相似问题