Вы никогда не должны изменять путь напрямую, через переменные окружения или sys.path
. Используете ли вы ОС (например apt-get
), илиpip
в virtualenv, пакеты будут установлены в папку, уже находящуюся на пути.
В вашем примере GNU Radio устанавливается в стандартное site-packages
местоположение системы Python 2 , которое уже находится в пути. Достаточно указать PyCharm на правильного интерпретатора; если нет, то есть что-то не так, что не очевидно. Возможно, /usr/bin/python
это не указывает на тот же интерпретатор, в котором было установлено GNU Radio; попробуйте указать конкретно на python2.7
двоичный файл. Или PyCharm раньше плохо обнаруживал пакеты;File > Invalidate Caches > Invalidate and Restart
сказал бы это повторно сканировать.
В этом ответе будет рассказано, как настроить среду проекта, установить пакеты в различных сценариях и настроить PyCharm. Я несколько раз ссылаюсь на Руководство пользователя по упаковке Python , написанное той же группой, которая поддерживает официальные инструменты упаковки Python.
Правильный способ разработки приложения на Python - это virtualenv. Пакеты и версия устанавливаются без влияния на систему или другие проекты. PyCharm имеет встроенный интерфейс для создания virtualenv и установки пакетов. Или вы можете создать его из командной строки, а затем указать на него PyCharm.
$ cd MyProject
$ python2 -m virtualenv env
$ . env/bin/activate
$ pip install -U pip setuptools # get the latest versions
$ pip install flask # install other packages
В своем проекте PyCharm перейдите по ссылке File > Settings > Project > Project Interpreter
. Если вы использовали virtualenvwrapper
или PyCharm для создания env, то он должен появиться в меню. Если нет, щелкните по шестерне, выберите Add Local
и найдите двоичный файл Python в env. PyCharm отобразит все пакеты в выбранной среде.
В некоторых случаях, например, с GNU Radio, пакет для установки отсутствует pip
, пакет был установлен во всей системе при установке остальной части GNU Radio (ex. apt-get install gnuradio
). В этом случае вам все равно следует использовать virtualenv, но вам необходимо сообщить ему об этом системном пакете.
$ python2 -m virtualenv --system-site-packages env
К сожалению, это выглядит немного грязно, потому что все системные пакеты теперь появятся в вашем env, но это всего лишь ссылки, вы все равно можете безопасно устанавливать или обновлять пакеты, не влияя на систему.
В некоторых случаях у вас будет несколько разрабатываемых локальных пакетов, и вы захотите, чтобы один проект использовал другой пакет. В этом случае вы можете подумать, что вам нужно добавить локальный пакет в путь другого проекта, но это не так. Вы должны установить свой пакет в режиме разработки . Все, что для этого требуется, - это добавить setup.py
файл в ваш пакет. , который в любом случае потребуется для правильного распространения и развертывания пакета позже.
Минимум setup.py
для вашего первого проекта:
from setuptools import setup, find_packages
setup(
name='mypackage',
version='0.1',
packages=find_packages(),
)
Затем установите его в env вашего второго проекта:
$ pip install -e /path/to/first/project