Search code examples
pythonperlinline

How can I specify the version of Python that Perl's Inline::Python module is using?


I am running Debian squeeze and perl v5.10.1 and I have two versions of python installed:

$ pyversions -i
python2.5 python2.6

Python::Inline uses python2.5 obvoiusly:

$ perl
use Inline::Python;
Inline::Python::py_eval('import sys');
Inline::Python::py_eval('print sys.version');

2.5.5 (r255:77872, Nov 28 2010, 17:10:16)
[GCC 4.4.5]

I need python2.6 to run my python code. How can I accomplish that?


Solution

  • You link with desired version during the installation of the module. See Makefile.PL:

    #============================================================================
    # What python are we going to try?
    #============================================================================
    my @pythons;
    my $sep = $^O eq 'MSWin32' ? ";" : ":";
    for $p (split /$sep/, $ENV{PATH}) {
        $p =~ s/^~/$ENV{HOME}/;
        $p .= "/python";
        push @pythons, { path => $p } if -f $p && -x $p;
    }
    
    # Keep them in PATH order.
    #@pythons = sort { $a->{path} cmp $b->{path} } @pythons;
    
    my $num = 1;
    print "Found these python executables on your PATH:\n";
    print $num++ . ". " . $_->{path} . "\n" for @pythons;
    
    my $sel = prompt("Use which?", '1');
    $sel = $pythons[$sel-1] if $sel =~ /^\d+$/;
    $sel = { path => $sel } unless ref $sel eq 'HASH';
    
    print "Using $sel->{path}\n";