繁体   English   中英

PyCharm 无法识别已安装的模块

[英]PyCharm doesn't recognize installed module

我在 Mac 上使用“请求”模块时遇到问题。 我使用 python34 并通过 pip 安装了“请求”模块。我可以通过再次运行安装来验证这一点,它会告诉我该模块已经安装。

15:49:29|mymac [~]:pip install requests
Requirement already satisfied (use --upgrade to upgrade): requests in /opt/local/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages

虽然我可以通过交互式 Python 解释器导入“请求”模块,但尝试在 PyCharm 中执行“导入请求”会产生错误“没有名为请求的模块”。 我检查了我的 PyCharm Python 解释器设置,(我相信)它设置为与我的环境中使用的相同的 python34。 但是,我也看不到 PyCharm 中列出的“请求”模块。

PyCharm Python 解释器设置

很明显,我在这里遗漏了一些东西。 你们能建议我应该在哪里看或者我应该修复什么才能让这个模块工作吗? 我的印象是当我在我的环境中通过 pip 安装模块时,PyCharm 会检测到这些变化。 但是,我这边好像有什么东西坏了……

如果您使用的是 PyCharms CE(社区版),请点击:

File->Default Settings->Project Interpretor

屏幕截图:解释器设置

看到底部的+号,点击它。 它将打开另一个对话框,其中包含许多可用模块。 选择您的包(例如请求),PyCharm 将完成剩下的工作。

医学博士

在我的情况下,使用预先存在的 virtualenv 在编辑器中不起作用 - 所有模块都被标记为未解析的引用(运行自然有效,因为这在编辑器的配置之外,只是运行一个外部进程(调试不太容易) )。
原来 PyCharm 没有添加site-packages目录......修复是手动添加它。

打开文件 -> 设置 -> 项目解释器,选择“显示全部...”(编辑配置)(1),选择您的解释器(2),然后单击“显示所选解释器的路径”(3)。

在该屏幕中,手动添加虚拟环境的“site-packages”目录(4)(我也添加了“Lib”,这是一个很好的措施); 一旦完成并保存,它们将出现在解释器路径中。

步骤

另一件不会有坏处的事情是在解释器的编辑框中选择“将此虚拟环境与当前项目关联”。

打开 pyCharm 的 python 控制台。 单击重新运行。 它会在第一行说如下内容

/System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7 /Applications/PyCharm.app/Contents/helpers/pydev/pydevconsole.py 52631 52632

在这种情况下 pyCharm 使用以下解释器

/System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7 

现在启动控制台并运行以下命令

sudo /System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7 -m pip install <name of the package>

这应该安装你的包:)

当您使用的软件包安装在环境之外(例如 Anaconda 或 virtualenv)时,就会出现此问题。 为了让 PyC​​harm 识别安装在特定环境之外的包,请执行以下步骤:

Preferences -> Project -> Project Interpreter -> 3 dots -> Show All -> Select relevant interpreter -> 单击树形图标Show paths for the selected interpreter

现在检查哪些路径可用,并将指向环境之外的包安装目录的路径添加到解释器路径中。

要查找包位置,请使用:

$ pip show gym
Name: gym
Version: 0.13.0
Summary: The OpenAI Gym: A toolkit for developing and comparing your reinforcement learning agents.
Home-page: https://github.com/openai/gym
Author: OpenAI
Author-email: gym@openai.com
License: UNKNOWN
Location: /usr/local/lib/python3.7/site-packages
...

Location下指定的路径添加到解释器路径,这里

/usr/local/lib/python3.7/site-packages

然后,让索引完成并可能另外重新打开您的项目。

Pycharm 无法识别已安装的本地模块,因为选择的 python 解释器是错误的。 它应该是安装 pip 包的地方,即虚拟环境。

我在 Windows 中通过 pip 安装了软件包。 在 Pycharm 中,既没有检测到它们,也没有显示任何其他 Python 解释器(我的系统上只安装了 python 3.6)。

在此处输入图像描述

我重新启动了 IDE。 现在我能够看到在我的虚拟环境中创建的 python 解释器。 选择那个 python 解释器,你所有的包都会被显示和检测到。 享受!

在此处输入图像描述

使用双 python 2.73.4 ,默认为2.7 ,我一直使用 pip3 为3.4解释器安装模块,并使用pip2.7解释器安装模块。

尝试这个:

pip3 install requests

这是因为您在创建项目时没有选择两个选项:- ** 继承全局站点包 ** 可用于所有项目 现在您需要创建一个新项目,并且在选择项目解释器时不要忘记勾选这两个选项.

  1. 如果您转到pycharm项目解释器 -> 单击已安装的包之一,然后将鼠标悬停 -> 您将看到pycharm安装包的位置。 这是您应该安装软件包的地方。

  2. 现在,如果你做了sudo -H pip3 install <package> pip3 将它安装到不同的目录,即/usr/local/lib/site-packages

因为它与pycharm知道的目录不同,因此您的包没有显示在pycharm中。

解决方案:只需使用pycharm安装包,方法是转到 File->Settings->Project->Project Interpreter -> 单击 (+) 并搜索要安装的包,然后单击确定。

-> 系统会提示你安装包成功,你会看到它pycharm

解决方案很简单(PyCharm 2021.2.3 社区版)。 我在 Windows 上,但用户界面应该是相同的。 在项目树中,打开外部库 > Python 解释器 > venv > pyvenv.cfg。 然后改变:

include-system-site-packages = false

至:

include-system-site-packages = true

PyCharm 图像

这也引起了我的注意,事实证明,我唯一需要做的就是重新启动 Pycharm。 有时在安装 pip 后,即使 pip 在设置中显示为已安装,也无法将其加载到项目中。 真可惜。

对于蟒蛇

启动 Anaconda Navigator -> 环境 -> “Your_Enviroment” -> 更新索引 -> 重新启动 IDE。

为我解决了。

在 pip 安装我需要的一切之后。 我去找口译员,把它重新指向原来的位置。 我的案例:/anaconda3/bin/python 中的 python3.6 使用 virtualenv ...

此外,在我点击加号“+”安装新软件包之前。 我不得不取消选择它右侧的 conda 图标。 似乎情况正好相反,但只有到那时它才通过查询识别出我拥有/需要的包。

在我的情况下,这些软件包是通过 setup.py + easy_install 安装的,它们最终位于 site_package 目录中的 *.egg 目录中,python 可以识别但 pycharm 不能识别。

我将它们全部删除,然后用 pip install 重新安装,然后它就可以工作了,幸运的是我正在处理的项目提出了一个 requirements.txt 文件,所以它的命令是:

pip install -r ./requirement.txt

在 Windows 上,我必须 cd 进入 venv 文件夹,然后 cd 进入脚本文件夹,然后 pip install 模块开始工作

cd venv
cd scripts
pip install module

我刚刚在一个全新的安装/项目中遇到了这个问题,但我正在使用 IntelliJ IDEA 的 Python 插件。 它与 PyCharm 基本相同,但项目设置略有不同。 对我来说,该项目指向正确的 Python 虚拟环境,但甚至没有识别出内置模块。

原来 SDK 类路径是空的。 我添加了 venv/lib/python3.8 和 venv/lib/python3.8/site-packages 的路径,问题得到解决。 File->Project Structure 并在 Platform Settings 下,单击 SDKs,选择您的 Python SDK,并确保类路径在那里。

在此处输入图像描述

我在使用 Virtualenv 创建项目时遇到了这个问题。

Neeraj Aggarwal 建议的解决方案对我有用。 但是,如果您不想创建新项目,那么以下可以解决问题。

  1. 关闭项目
  2. 找到文件 <您的项目文件夹>/venv/pyvenv.cfg
  3. 使用任何文本编辑器打开此文件
  4. 设置 include-system-site-packages = true
  5. 保存
  6. 打开项目
pip install --user discord

上面的命令解决了我的问题,只需使用“--user”标志

我通过 python 包选项卡安装了包,它开始工作

我通过直接安装到解释器来解决我的特定问题。 转到设置并点击正在使用的解释器下方的“+”,然后搜索包并安装。 我相信我首先遇到了这个问题,因为我没有用我的 venv 正确设置我的解释器(不完全确定,但这解决了它)。

我遇到了 djangorestframework-simplejwt 的问题,因为它是我在启动当前项目之前没有从以前的项目中安装到这个解释器的第一个包,但它应该适用于任何其他没有显示为导入的包。 重申一下,尽管我认为这是一种解决方法,但不能解决导致此问题的设置问题。

在此处输入图像描述

如果有人遇到同样的问题,他/她安装了 python 软件包,但 PyCharm IDE 没有显示这些软件包,请按照以下步骤操作:

  1. Go 到项目左侧 PyCharm IDE 然后
  2. 然后点击venv库
  3. 然后在任何编辑器中打开 pyvenv.cfg 文件
  4. 将这段代码(include-system-site-packages = flase)从 false 更改为 true
  5. 然后保存并关闭它,然后关闭 pycharm 然后
  6. 再次打开PyCharm,你的问题就解决了。 谢谢

有人在 web 上报告了此问题,但似乎没有任何响应。 可能的解决方案:

  • 将您的 PyCharm 降级到版本 2020.2.4。
  • 在左侧窗格中,您应该定义代码的根目录所在的位置。 Go 到相关目录(在左侧窗格中),右键单击鼠标,在底部您将目录标记为然后 select “源根”。 资源

  • src文件夹标记为源的根目录
  • File | Settings (Mac 上的Preferences )| Editor | File Types 查找映射到文本类型或按内容类型自动检测文件类型的文件名。 删除不正确的映射,它将解决问题。 如果在 IDE 设置中仍然找不到错误的映射,请在Configuration directory中找到options/filetypes.xml文件。 关闭 IDE 并编辑此文件以删除不正确的映射或删除此文件以将所有文件类型重置为默认值。

  • 再次重新导入所有模块,但这次 select 是在确认并重新启动 PyCharm 之前下载所有源/依赖项的选项
  • File | Manage IDE Settings | Restore Default Settings

而不是在终端中运行pip 安装-> 本地使用终端 -> 命令提示符

见下图

pycharm_command_prompt_image

在继续之前,我想指出如何在PyCharm中配置Python解释器:
[SO]:如何使用“嵌入式 zip 文件”安装 Python(@CristiFati 的回答)

这种行为有多种可能的原因。

1. Python实例不匹配

  • 当一台机器上有多个Python实例(已安装、 VEnvs 、定制......)时会发生。 用户认为他们正在使用一个特定的实例(具有一组属性(已安装的包)),但实际上他们正在使用另一个实例(具有不同的属性),因此造成了混淆。 当 2 个实例具有相同的版本(并且在某种程度上相似的位置)时,很难弄清楚事情

  • 发生主要是由于环境配置(无论哪个路径在${PATH}排在第一位,别名es(在Nix上),...)

  • 不是PyCharm特定的(意味着它更通用,也发生在它之外),但一个典型的PyCharm相关示例是不同的控制台解释器和项目解释器,导致混淆

  • The fix is to specify full paths (and pay attention to them ) when using tools like Python , PIP , .... Check [SO]: How to install a package for a specific Python version on Windows 10? (@CristiFati 的回答)了解更多详情

  • 这正是这个问题存在的原因。 涉及2个Python版本:

    • 项目解释器: /Library/Frameworks/Python.framework/Versions/3.4

    • 具有请求模块的解释器: /opt/local /Library/Frameworks/Python.framework/Versions/3.4

    好吧,假设这两条路径没有某种关联( SymLink ed),但在我有机会检查的最新OSX版本中( CatalinaBig SurMonterey )这不会发生(默认情况下)

2. Python的模块搜索机制误区

  • 根据[Python.Docs]: Modules - The Module Search Path

    当导入名为spam的模块时,解释器首先搜索具有该名称的内置模块。 这些模块名称列在sys.builtin_module_names中。 如果未找到,它会在变量sys.path给出的目录列表中搜索名为spam.py的文件。 sys.path从这些位置初始化:

    • 包含输入脚本的目录(或未指定文件时的当前目录)。

    • PYTHONPATH (目录名称列表,语法与 shell 变量 PATH 相同)。

    • 依赖于安装的默认值(按照惯例,包括一个site-packages目录,由站点模块处理)。

    一个模块可能位于当前目录中,或者它的路径可能被添加到${PYTHONPATH}中。 这可能会诱使用户相信该模块实际上安装在当前的Python实例(的site-packages )中。 但是,当从不同的目录(或使用不同的${PYTHONPATH} )运行当前Python实例时,该模块会丢失,导致很多麻烦

  • 如需修复,请检查[SO]:PyCharm 的导入方式与系统命令提示符 (Windows) 的不同(@CristiFati 的回答)

3. PyCharm错误

4. 一个小故障

  • 不太可能,但还是要提一下。 由于某些原因(例如HW / SW故障),系统最终出现不一致的state,产生各种奇怪的行为

  • 可能的修复:

    不用说,las 2 选项只能作为最后的手段,并且只能由专家尝试,因为他们可能会搞砸其他项目,甚至无法解决问题

与问题不太相关,但不久前发布了PyCharm相关调查: [SO]: Run / Debug a Django application's UnitTests from the mouse right click context menu in Z4149CE0EE30A909A1F62C583FF2 .

如果您遇到底层问题(即 pycharm 的语言服务器),请将所有内容标记为 root 并创建一个新项目。 See details: https://stackoverflow.com/a/73418320/1601580 this seems to happy to me only when I install packages as in editable mode with pip (ie pip install -e. or conda develop). 详细信息: https://stackoverflow.com/a/73418320/1601580

--WINDOWS-- 如果使用 Pycharm GUI package 安装程序可以很好地为您的虚拟环境安装软件包,但您不能在终端中执行相同操作,

这是因为您没有在终端中设置虚拟环境,而是您的终端使用不使用虚拟环境的 Power Shell

如图所示,在命令行之前应该有 (venv) 而不是 (PS)

如果您有 (PS),这意味着您的终端使用的是 Power Shell 而不是 cmd

要解决此问题,请单击向下箭头和 select 命令提示符

select 命令提示符

现在您将获得 (venv) 并只需键入 pip install #package name# 并且 package 将添加到您的虚拟环境中

在您的 pycharm 终端中运行 pip/pip3 install package_name

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM