我已经追踪到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?