6

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?

Sinan Ünür
  • 116,958
  • 15
  • 196
  • 339
johannesch
  • 125
  • 1
  • 5
  • Wow. Python in Perl. Going from "There Is More Than One Way To Do It" to "There Is Only One Way To Format It"... mind blowing. – PP. Aug 22 '13 at 13:19

2 Answers2

6

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";
Sinan Ünür
  • 116,958
  • 15
  • 196
  • 339
-1

This answer is explicitly for the question tag and not for the specific environment which the user has posted the question for python 2.5 or python 2.6:

How can I specify the version of Python that Perl's Inline::Python module is using? => when your OS has both python 3.x and python 2.x it picks up the python that is shown when you type python in your terminal/command line. So when you have to choose between 3.x and 2.x Makefile.PL will not ask you the question instead it'll pick the one with python (usually python2.x with ubuntu where python will give us python2.x)

Solution: in Makefile.PL change $p value to "/python3" as shown below and it'll choose the right python version. Note: to make this changes you need to install perl packages by this method click here

#============================================================================
# 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 .= "/python3";
    push @pythons, { path => $p } if -f $p && -x $p;
}
ItsPrinceAk
  • 102
  • 7