簡體   English   中英

如何指定 Perl 的 Inline::Python 模塊正在使用的 Python 版本?

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

我正在運行 Debian 擠壓和 perl v5.10.1 並且我安裝了兩個版本的 python:

$ pyversions -i
python2.5 python2.6

Python::Inline顯然使用 python2.5:

$ 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]

我需要 python2.6 來運行我的 python 代碼。 我怎樣才能做到這一點?

您可以在安裝模塊期間鏈接所需的版本。 請參閱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";

此答案明確針對問題標簽,而不針對用戶針對 python 2.5 或 python 2.6 發布問題的特定環境:

如何指定 Perl 的 Inline::Python 模塊正在使用的 Python 版本? => 當您的操作系統同時具有 python 3.x 和 python 2.x 時,它會選擇您在終端/命令行中鍵入 python 時顯示的 python。 因此,當您必須在 3.x 和 2.x 之間進行選擇時,Makefile.PL 不會問您問題,而是會選擇帶有 python 的那個(通常是帶有 ubuntu 的 python2.x,其中 python 會給我們 python2.x)

解決方案:在 Makefile.PL 中將 $p 值更改為“/python3” ,如下所示,它將選擇正確的 python 版本。 注意:要進行此更改,您需要通過此方法安裝 perl 包,請單擊此處

#============================================================================
# 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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM