check interpreter version before running script
Fredrik Lundh
fredrik at pythonware.com
Tue Apr 5 12:42:52 EDT 2005
"rbt" <rbt at athop1.ath.vt.edu> wrote:
> Is there a recommended or 'Best Practices' way of checking the version of python before running
> scripts? I have scripts that use the os.walk() feature (introduced in 2.3) and users running 2.2
> who get errors. Instead of telling them, 'Upgrade you Python Install, I'd like to use sys.version
> or some other way of checking before running.
if you depend on os.walk, check for os.walk.
try:
from os import walk
except ImportError:
print "sorry, you need a newer python version!"
sys.exit()
or
import os
try:
os.walk
except AttributeError:
print "sorry, you need a newer python version!"
sys.exit()
if you only depend on a few functions, you can usually emulate them in
earlier versions. if 2.2 or newer is a reasonable requirement, you can
put a copy of the walk function in your script:
from __future__ import generators
try:
from os import walk
except ImportError:
def walk(...):
# copied from os.py in 2.3
if you want to support e.g 1.5.2 or newer, you can use something like this:
import os
try:
from os import walk
except ImportError:
class walk:
def __init__(self, directory):
self.stack = [directory]
def __getitem__(self, index):
dirpath = self.stack.pop(0)
dirnames = []
filenames = []
for file in os.listdir(dirpath):
name = os.path.join(dirpath, file)
if os.path.isdir(name) and not os.path.islink(name):
dirnames.append(file)
self.stack.append(name)
else:
filenames.append(file)
return dirpath, dirnames, filenames
(tweak as necessary)
</F>
More information about the Python-list
mailing list