Solución:
Agregar una ruta
Vaya a Archivo → Configuración → Configuración del proyecto → Intérprete del proyecto.
Luego presione configurar intérprete y navegue hasta la pestaña “Rutas”.
Presione el botón + en el área de Rutas. Puede poner la ruta al módulo que le gustaría que reconociera.
Pero no conozco el camino …
Abra el intérprete de Python donde puede importar el módulo.
>> import gnuradio
>> gnuradio.__file__
"path/to/gnuradio"
Por lo general, tendrá una estructura de carpetas como esta:
foobarbaz/
gnuradio/
__init__.py
other_file.py
Desea agregar foobarbaz a la ruta aquí.
Nunca debería necesitar modificar la ruta directamente, ya sea a través de variables de entorno o sys.path
. Ya sea que use el sistema operativo (ej. apt-get
), o pip
en un virtualenv, los paquetes se instalarán en una ubicación que ya se encuentre en la ruta.
En su ejemplo, GNU Radio está instalado en el estándar del sistema Python 2 site-packages
ubicación, que ya está en el camino. Apuntar PyCharm al intérprete correcto es suficiente; si no es así, hay algo más mal que no es evidente. Puede ser que /usr/bin/python
no apunta al mismo intérprete en el que se instaló GNU Radio; intente señalar específicamente a la python2.7
binario. O PyCharm solía ser algo malo en la detección de paquetes; File > Invalidate Caches > Invalidate and Restart
le diría que vuelva a escanear.
Esta respuesta cubrirá cómo debe configurar un entorno de proyecto, instalar paquetes en diferentes escenarios y configurar PyCharm. Me refiero varias veces a la Guía del usuario de empaquetado de Python, escrita por el mismo grupo que mantiene las herramientas de empaquetado oficiales de Python.
La forma correcta de desarrollar una aplicación Python es con un virtualenv. Los paquetes y la versión se instalan sin afectar el sistema ni otros proyectos. PyCharm tiene una interfaz incorporada para crear un virtualenv e instalar paquetes. O puede crearlo desde la línea de comando y luego apuntar PyCharm hacia él.
$ cd MyProject
$ python2 -m virtualenv env
$ . env/bin/activate
$ pip install -U pip setuptools # get the latest versions
$ pip install flask # install other packages
En su proyecto PyCharm, vaya a File > Settings > Project > Project Interpreter
. Si usaste virtualenvwrapper
o PyCharm para crear el env, entonces debería aparecer en el menú. Si no es así, haga clic en el engranaje, elija Add Local
y ubique el binario de Python en env. PyCharm mostrará todos los paquetes en el entorno seleccionado.
En algunos casos, como con GNU Radio, no hay ningún paquete para instalar con pip
, el paquete se instaló en todo el sistema cuando instaló el resto de GNU Radio (ej. apt-get install gnuradio
). En este caso, aún debe usar un virtualenv, pero deberá informarlo sobre este paquete de sistema.
$ python2 -m virtualenv --system-site-packages env
Desafortunadamente, se ve un poco desordenado, porque todos los paquetes del sistema ahora aparecerán en su entorno, pero son solo enlaces, aún puede instalar o actualizar paquetes de manera segura sin afectar el sistema.
En algunos casos, tendrá varios paquetes locales que está desarrollando y querrá que un proyecto use el otro paquete. En este caso, podría pensar que tiene que agregar el paquete local a la ruta del otro proyecto, pero este no es el caso. Debe instalar su paquete en modo de desarrollo. Todo esto requiere agregar un setup.py
en su paquete, que será necesario de todos modos para distribuir e implementar correctamente el paquete más adelante.
Mínimo setup.py
para tu primer proyecto:
from setuptools import setup, find_packages
setup(
name="mypackage",
version='0.1',
packages=find_packages(),
)
Luego instálelo en el entorno de su segundo proyecto:
$ pip install -e /path/to/first/project
Para mí, era solo una cuestión de marcar el directorio como raíz de origen.