Denis
Denis

Reputation: 367

How to create a universal program code for different versions of a program library?

I use a software library that has different function names in different versions of the library.

I try to use the following code:

some_variable = module.old_name_of_function()

But this code only works with the old version of the program library.

I plan to use the code on different computers, with different installed versions of the software library.

Some computers have a new version of the program library installed, and the following code should be used there:

some_variable = module.new_name_of_function()

And if I use old_name_of_function() in the new version of the library, I will get an error.

How to solve this issue?

Upvotes: 0

Views: 46

Answers (2)

vurmux
vurmux

Reputation: 10020

You can use pkg_resources module for it (example for numpy):

import pkg_resources
pkg_resources.get_distribution("numpy").version

will return:

'1.15.2'

Then you can use cases, ifs or something else to run a function you need.

For example:

import pkg_resources
version = pkg_resources.get_distribution("numpy").version
v = version.split('.')

if int(v[0]) == 1 and int(v[1]) < 17:
    print('WAKA')
else:
    print('NEW WAKA')

will print 'WAKA' for every 1.X version of numpy, where X < 17.

Upvotes: 1

Bram Vanroy
Bram Vanroy

Reputation: 28437

I suppose you could do

try:
    my_func = module.old_name_of_function
except AttributeError:
    my_func = module.new_name_of_function

some_variable = my_func()

Upvotes: 1

Related Questions