Я отследил ошибку в проекте numba по различиям в установках Ubuntu. Я попытался воспроизвести ошибку в различных AMI для AWS в Ubuntu, и эта ошибка проявляется только в 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?