您永远不需要直接修改路径,无论是通过环境变量还是sys.path
. 无论您使用操作系统(例如apt-get
)还是pip
在 virtualenv 中,软件包都将安装到路径上已经存在的位置。
在您的示例中,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 打包工具的同一组编写。
开发 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
,然后在 env 中找到 Python 二进制文件。PyCharm 将显示所选环境中的所有包。
在某些情况下,例如使用 GNU Radio,没有要安装pip
的软件包,当您安装 GNU Radio 的其余部分(例如 )时,该软件包已在系统范围内安装apt-get install gnuradio
。在这种情况下,您仍然应该使用 virtualenv,但您需要让它知道这个系统包。
$ python2 -m virtualenv --system-site-packages env
不幸的是它看起来有点乱,因为所有系统包现在都会出现在你的环境中,但它们只是链接,你仍然可以安全地安装或升级包而不影响系统。
在某些情况下,您将拥有多个正在开发的本地包,并且希望一个项目使用另一个包。在这种情况下,您可能认为必须将本地包添加到其他项目的路径中,但事实并非如此。你应该在开发模式下安装你的包。所有这一切都需要向您的包添加一个setup.py
文件,无论如何都需要该文件才能在以后正确分发和部署包。
setup.py
第一个项目的最小值:
from setuptools import setup, find_packages
setup(
name='mypackage',
version='0.1',
packages=find_packages(),
)
然后将其安装在您的第二个项目的环境中:
$ pip install -e /path/to/first/project