Поскольку None
является объектом, я написал функцию object_hash
для вычисления хеша объекта:
import sys
import struct
def int_overflow(value):
""" simulate integer overflow """
m = sys.maxint + 1
return (value + m) % (m * 2) - m
def object_hash(value):
res = id(value)
sizeof_void_p = struct.calcsize('P')
res = int_overflow((res >> 4) | (res << (8 * sizeof_void_p - 4)))
if res == -1:
res = -2
return res
Полученные хэши равны:
>>> hash(None)
492116
>>> object_hash(None)
492116L
Я не могу объяснить, почему это имеет значение, но это имеет. Если я запускаю драйвер с полным путем:
/home/vagrant/Code/mysite/vendor/laravel/dusk/bin/chromedriver-linux --port=8888
все работает нормально.