Cython ImportError: нет модуля с именем parallel

Я пытаюсь получить доступ к новым параллельным функциям Cython 0.15 (используя Cython 0.15.1). Однако, если я попробую этот минимальный пример (testp.py), взятый с http://docs.cython.org/src/userguide/parallelism.html:

from cython.parallel import prange, parallel, threadid
cdef int i
cdef int sum = 0

for i in prange(n, nogil=True):
    sum += i
print sum

с этим setup.py:

from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
import numpy

ext = Extension("testp", ["testp.pyx"], include_dirs=[numpy.get_include()],
                extra_compile_args=['-fopenmp'], extra_link_args ['-fopenmp'])
setup(ext_modules=[ext], cmdclass={'build_ext': build_ext})

когда я import testp, Python говорит мне: ImportError: No module named parallel. И на самом деле, если я просматриваю пакет Cython в пакетах сайтов, я не могу найти ни одного файла или каталога с именем parallel. Но я думал, что это должно быть включено где-то в выпуске? Может кто-нибудь пояснить для запутавшегося пользователя?


person proggy    schedule 05.12.2011    source источник
comment
Итак, решение было в том, что у меня все еще была установлена ​​неправильная версия. Установка python setup.py не обновила мою версию Cython. Но с помощью easy_install --upgrade Cython все заработало нормально! Спасибо люди, проблема решена.   -  person proggy    schedule 06.12.2011


Ответы (2)


Вы можете проверить все свои модули Python в командной строке Python, используя:

>>> help('modules')

А затем попробуйте установить/переустановить cython с помощью easy_install или pip.

person SkyFox    schedule 05.12.2011
comment
Ах, я не знал easy_install! С ним обновление до 0.15.1 было — ну — просто! Спасибо за рекомендацию. - person proggy; 06.12.2011

Я использую Cython 0.15+

cython.parallel существует в Shadow.py:

import sys
sys.modules['cython.parallel'] = CythonDotParallel()

И Shadow.py может быть расположен в каталоге dist-packages вашего Python, например /usr/local/lib/python2.6/dist-packages/ в Linux.

person ukessi    schedule 06.12.2011
comment
Возможно, я действительно установил не в тот каталог, потому что единственный Shadow.py, который я нашел, находится в site-packages/Cython и не содержит никаких параллелей. Странно, я использовал обычный метод установки python setup.py. - person proggy; 06.12.2011