Pycharm не распознает модули Cython, расположенные в path

#python #pycharm #cython

#python #pycharm #cython

Вопрос:

У меня есть эти две строки кода:

 from libc.stdlib cimport malloc, calloc, realloc, free

from optv.tracking_framebuf cimport TargetArray
  

Первая строка не выделена PyCharm (2016.2.3 professional на Ubuntu 14.04) как неразрешенная ссылка, но вторая строка выделена красным подчеркиванием как неразрешенная ссылка.

Мой TargetArray класс находится в tracking_framebuf.pxd файле, который находится в /usr/local/lib/python2.7/dist-packages/optv/ вместе с файлами .c, .pyx, .so с таким же именем.

Я вставил /usr/local/lib/python2.7/dist-packages/optv/ и /usr/local/lib/python2.7/dist-packages/ пути, которые должны быть связаны с интерпретатором python, но сообщения об ошибках все еще появляются в редакторе.

Несмотря на сообщения об ошибках, файл (наряду с другими) успешно обработан с помощью этого setup.py скрипт:

 # -*- coding: utf-8 -*-
from distutils.core import setup
from Cython.Distutils import build_ext
from Cython.Distutils.extension import Extension

import numpy as np
import os
inc_dirs = [np.get_include(), '.']

def mk_ext(name, files):
    return Extension(name, files, libraries=['optv'], include_dirs=inc_dirs,
        pyrex_include_dirs=['.'])

ext_mods = [
    mk_ext("optv.tracking_framebuf", ["optv/tracking_framebuf.pyx"]),
    mk_ext("optv.parameters", ["optv/parameters.pyx"]),
    mk_ext("optv.calibration", ["optv/calibration.pyx"]),
    mk_ext("optv.transforms", ["optv/transforms.pyx"]),
    mk_ext("optv.imgcoord", ["optv/imgcoord.pyx"]),
    mk_ext("optv.image_processing", ["optv/image_processing.pyx"]),
    mk_ext("optv.segmentation", ["optv/segmentation.pyx"]),
    mk_ext("optv.orientation", ["optv/orientation.pyx"])
]

setup(
    name="optv",
    cmdclass = {'build_ext': build_ext},
    packages=['optv'],
    ext_modules = ext_mods,
    package_data = {'optv': ['*.pxd']}
)
  

Я что-то упускаю на пути к избавлению от этих сообщений об ошибках и возможности просматривать содержимое файлов .pxd, которые я размещаю в path?

Комментарии:

1. Возможно, что-то пошло не так с вашей настройкой… как вы его устанавливаете? Если вы хотите запускаться из папки пакета Python, отличной от папки пакета Python по умолчанию, попробуйте изменить добавление пути к вашему скомпилированному пакету в переменную среды PYTHONPATH

Ответ №1:

Проблема была решена путем добавления /usr/local/lib/python2.7/dist-packages/ в PYTHONPATH с помощью:

Файл -> Настройки -> Проект -> Структура проекта -> Добавить корень содержимого .

Комментарии:

1. Добавив пакеты сайта моего venv, PyCharm теперь распознает импорт Cython.

Ответ №2:

По умолчанию PyCharm будет игнорировать импорт Cython, если они не являются частью пути поиска. Если папка модуля белая, это неопровержимый факт:

введите описание изображения здесь

Если папка белая, добавьте ее в путь поиска:

введите описание изображения здесь

Обновление 2017-09-18

По какой-то причине иногда PyCharm фактически не добавляет каталоги, помеченные как «Sources Root», в путь Python. Исправьте это, включив это.

Обратите внимание на «Запуск скрипта» на изображении ниже. Я предполагаю, что добавление этих строк вручную в ваш скрипт на Python также привело бы к тому же результату.

введите описание изображения здесь