我正在编写一个需要在RHEL 6.x上运行的Python脚本,它默认使用Python 2.6,但也应该使用最新的Python。我需要解析命令行参数,但Python 2.6只包含optparse,在最近的Python中已经弃用了arpparse。有没有办法动态选择是否使用argparse或opt parse(我意识到它需要两个解析算法)?
答案 0 :(得分:3)
首先尝试导入argparse
,然后使用optparse
,如果找不到它:
try:
import argparse
# Argparse-specific stuff
except ImportError:
import optparse
# Optparse-specific stuff
您还可以使用sys.version
或sys.version_info
检查python版本。
import sys
if (sys.version_info.major >= 2 and sys.version_info.minor >= 7):
import argparse
# ...
else:
import optparse
或者,您可以在所有版本上使用optparse
,如果您不需要改进的功能argparse
已
答案 1 :(得分:0)
暂时坚持使用optparse
,或安装argparse
from PyPI进行Python 2.6安装。
不要试图只支持两个Python版本;为自己省去头痛。 {@ 1}}可能已被弃用,但在使用Python 2.7运行时,仍能正常运行。它的功能比optparse
提供的功能少。
如果您还必须在Python 3.x安装上运行,那么可以尝试使用导入防护来支持这两者:
argparse
但是将try:
import argparse
# configure argparse
except ImportError:
import optparse
# configure optparse
作为依赖项运送起来要容易得多。