Я использую пользовательский генератор случайных чисел с Cython.Я не понимаю почему, но это больше не работает ... Я думаю, это связано с Python 2.7 или, возможно, с новой версией Cython.
В dcmtrand.pyx у меня есть:
...
import dcmt
...
cdef class RandomState:
...
def __reduce__(self):
return (dcmt.__RandomState_ctor, (), self.get_state())
...
dcmt - это папка.В нем у меня есть init .py файл:
from dcmtrand import *
def __RandomState_ctor():
return RandomState.__new__(RandomState)
Я скомпилирую его, используя
python setup.py build_ext --inplace
, затем копирую полученный файл dcmtrand.so в папку dcmt,и я перемещаю папку dcmt в свой проект.
Теперь, если я импортирую dcmt, все в порядке:
import dcmt
import cPickle
dc = dcmt.DynamicCreator(5)
a = dc[0]
cPickle.dumps(a)
Но если я хочу поместить dcmt в подпакет, он больше не работает:
from prng import dcmt
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "prng/dcmt/__init__.py", line 1, in <module>
from dcmtrand import *
File "dcmtrand.pyx", line 10, in init dcmtrand (dcmtrand.c:6955)
ImportError: No module named dcmt
Чтобы это работало, мне нужно добавить prng к пути Python.
Почему он больше не работает?Как заставить это работать снова?