如何在pycharm中导入模块?

时间:2013-11-10 03:07:18

标签: python pycharm gnuradio

PyCharm 中,我添加了Python环境/usr/bin/python。然而,

from gnuradio import gr

作为未定义的引用失败。但是,它在命令行的Python解释器中工作正常。

GNURadio在Pycharm之外的python中运行良好。一切都按我的要求安装和配置。

Gnuradio位于/usr/local/lib/python2.7/site-packages/gnuradio

此外:

  

PYTHONPATH =的/ usr /本地/ LIB / python2.7 /站点包:/usr/local/lib/python2.7/site-packages/gnuradio

13 个答案:

答案 0 :(得分:196)

添加路径

进入文件→设置→项目设置→项目翻译。

然后按configure interpreter,导航到“路径”选项卡。

pycharm path tab

按路径区域中的+按钮。您可以将路径放到您希望识别的模块中。

但我不知道路径..

打开python解释器,您可以在其中导入模块。

>> import gnuradio
>> gnuradio.__file__
"path/to/gnuradio"

最常见的是你会有这样的文件夹结构:

foobarbaz/
  gnuradio/
    __init__.py
    other_file.py

你想在这里添加foobarbaz到路径。

答案 1 :(得分:77)

您永远不需要通过环境变量或sys.path直接修改路径。无论您是在virtualenv中使用操作系统(例如apt-get)还是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来创建env,那么它应该显示在菜单中。如果没有,请单击齿轮,选择Add Local,然后在env中找到Python二进制文件。 PyCharm将显示​​所选env。

中的所有包

choose an env

manually locate env

在某些情况下,例如使用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

答案 2 :(得分:39)

对我来说,只需将目录标记为源根目录即可。

答案 3 :(得分:37)

我的版本是PyCharm Professional 3.4版,添加路径部分不同。

您可以转到“偏好设置” - > “项目口译员”。选择右上角的工具按钮。

然后选择“更多...” - > “显示所选译员的路径” - > “加”。然后你可以添加一个路径。

答案 4 :(得分:31)

在PyCharm 2017中添加路径

档案 - >设置(或Ctrl + Alt + S) - >项目 - >项目口译员

enter image description here 全部显示

enter image description here 选择右侧的底部图标

enter image description here 点击加号按钮添加模块的新路径

答案 5 :(得分:4)

对于PyCharm Community Edition 2016.3.2,它是:

"项目口译员" - >右上角设置图标 - > "更&#34 ;.

然后在右侧应该有一个包图标。当将鼠标悬停在它上面时,它应该说"显示所选译员的路径"。点击它。

然后点击"添加"按钮或按" alt + insert"添加新路径。

答案 6 :(得分:1)

在Project Explorer中,您可以右键单击包含模块的文件夹,并设置为' Source'。

它将在索引中解析代码完成以及其他项目。

答案 7 :(得分:1)

作为n次快速修复,这对我有用: 在有问题的导入之前添加以下两行:

import sys
sys.path.append('C:\\Python27\\Lib\site-packages')

答案 8 :(得分:1)

我是PyCharm(使用2018.3.4 CE)和Python的新手,所以我僵硬地尝试遵循上述每个建议来访问我知道在系统站点软件包中的PIL(枕头)软件包。没有工作。当我碰巧注意到“项目浏览器”窗口中项目下的venv / pyvenv.cfg文件时,我打算放弃过夜。我在该文件中找到“ include-system-site-packages = false”行,因此将其更改为“ true”。问题解决了。

答案 9 :(得分:1)

在PyCharm 2020.1 CE和Professional中,您可以通过执行以下操作为项目的Python解释器添加路径:

1)单击项目右下角的解释器,然后选择“解释器设置”

Select Interpreter Settings

2)单击口译员名称右侧的设置按钮,然后选择“显示全部”:

Select Show All Interpreters

3)确保已选择项目的解释器,然后单击底部工具栏中的第五个按钮,“显示选定解释器的路径”:

Show paths for the selected Python interpreter

4)单击底部工具栏中的“ +”按钮,然后将路径添加到包含您的模块的文件夹中:

enter image description here

答案 10 :(得分:0)

下载anaconda https://anaconda.org/

完成安装anaconda后......

进入设置 - >项目设置 - >项目口译员。

然后导航到“路径”选项卡并搜索/ anaconda / bin / python

点击申请

enter image description here

答案 11 :(得分:0)

请勿更改解释器的路径!

改为更改项目结构:

  

文件->设置->项目->项目结构->添加内容根

答案 12 :(得分:0)

在我的PyCharm 2019.3中,选择项目,然后选择文件--->设置,然后选择项目:YourProjectName,在``项目解释器''中,单击解释器或设置,--->显示全部... --->选择当前的解释器--->显示选定解释器的路径--->然后单击“添加”以添加您的库,在我的情况下,它是一个轮包。