#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 также привело бы к тому же результату.