您永远不需要通过环境变量或直接修改路径sys.path
。无论您使用的是os(例如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打包用户指南》,该手册由维护官方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创建环境,那么它应该显示在菜单中。如果不是,请单击齿轮,选择Add Local
,然后在环境中找到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