您永远不需要直接修改路径,无论是通过环境变量还是sys.path。无论您使用操作系统(例如apt-get)还是在 virtualenv 中使用pip,软件包都将安装到路径上已经存在的位置。
在您的示例中,GNU Radio 安装到系统 Python 2 的标准 site-packages 位置,该位置已经在路径中。将 PyCharm 指向正确的解释器就足够了;如果不是,还有其他不明显的错误。 /usr/bin/python 可能没有指向安装 GNU Radio 的同一个解释器;尝试专门指向python2.7 二进制文件。或者,PyCharm 过去在检测包方面有些欠佳; File > Invalidate Caches > Invalidate and Restart 会告诉它重新扫描。
这个答案将涵盖您应该如何设置项目环境、在不同场景中安装包以及配置 PyCharm。我多次提到Python Packaging User Guide,由维护官方 Python 打包工具的同一组编写。
The correct way to develop a Python application is with a virtualenv. 安装包和版本不影响系统或其他项目。 PyCharm has a built-in interface to create a virtualenv and install packages. 或者您可以从命令行创建它,然后将 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 创建环境,那么它应该会显示在菜单中。如果没有,请单击齿轮,选择 Add Local,然后在 env 中找到 Python 二进制文件。 PyCharm 将显示所选环境中的所有包。
在某些情况下,例如使用 GNU Radio,pip 没有要安装的软件包,当您安装 GNU Radio 的其余部分(例如 apt-get install gnuradio)时,该软件包已在系统范围内安装。在这种情况下,您仍然应该使用 virtualenv,但您需要让它知道这个系统包。
$ python2 -m virtualenv --system-site-packages env
不幸的是它看起来有点乱,因为所有系统包现在都会出现在你的环境中,但它们只是链接,你仍然可以安全地安装或升级包而不影响系统。
在某些情况下,您将拥有多个正在开发的本地包,并且希望一个项目使用另一个包。在这种情况下,您可能认为必须将本地包添加到其他项目的路径中,但事实并非如此。你应该在development mode 中安装你的包。所有这些都需要adding a setup.py file to your package,无论如何在以后正确分发和部署包时都需要它。
第一个项目的最小setup.py:
from setuptools import setup, find_packages
setup(
name='mypackage',
version='0.1',
packages=find_packages(),
)
然后将它安装在你的第二个项目的环境中:
$ pip install -e /path/to/first/project