相同的 python 安装脚本在不同的 Ubuntu 上有何不同的行为?

相同的 python 安装脚本在不同的 Ubuntu 上有何不同的行为?

我已经追踪到numba 项目中的一个错误Ubuntu 安装中的差异。我尝试在各种 AWS ubuntu AMI 中重现该错误,但该错误仅在 Ubuntu 14.04 中出现。所以我的问题是,为什么同一组安装命令在不同的 ubuntu 安装中会有不同的行为?是否有可能在每个版本的 ubuntu 上安装了不同版本的 python 包,是否有办法检查差异?

我进行了测试:

Ubuntu 18.04 LTS [PASS] (ami-e3293383)
Ubuntu 16.04 LTS [PASS] (ami-43243a23)
Ubuntu 14.04 LTS [FAIL] (ami-e4293384)

测试内容是:

cat > issue3027.py  # Test program

import sys
import numba


@numba.njit
def f0(a,b):
  return a+b


@numba.njit
def f1(begin1, end1, begin2, end2):
  if begin1 > begin2: return f1(begin2, end2, begin1, end1)
  return end1 + 1 >= begin2

sys.api_version, sys.stdout = 12345, None


print>>sys.stderr, sys.api_version, sys.stdout  # 12345, None
f0(0,1)      # Does not reassign stdout
print>>sys.stderr, sys.api_version, sys.stdout  # 12345, None
f1(0,1,2,3)  # Reassigned stdout
print>>sys.stderr, sys.api_version, sys.stdout  # 12345, file object


assert sys.api_version == 12345  # Pass. From which we can infer reload was not called
assert sys.stdout is None  # Fail. sys.stdout was assigned and not reset.

然后:

   sudo apt-get update --yes
   sudo apt-get install  --yes python2.7 python-pip python-dev
   sudo pip install pip==9.0.1
   sudo pip install 'enum34==1.1.6' 'funcsigs==1.0.2' 'llvmlite==0.23.2' 'numba==0.38.1' 'numpy==1.14.5' 'singledispatch==3.4.0.3' 'six==1.11.0'
   python2.7 issue3027.py  # Pass/Fail?

相关内容