无法导入已安装的模块

2024-11-25 08:50:00
admin
原创
183
摘要:问题描述:安装mechanize后,我似乎无法导入它。我尝试过从 pip、easy_install 以及通过python setup.py install这个 repo 安装:https://github.com/abielr/mechanize。所有这些都无济于事,因为每次我进入 Python 交互时都会得...

问题描述:

安装mechanize后,我似乎无法导入它。

我尝试过从 pip、easy_install 以及通过python setup.py install这个 repo 安装:https://github.com/abielr/mechanize。所有这些都无济于事,因为每次我进入 Python 交互时都会得到:

Python 2.7.3 (default, Aug  1 2012, 05:14:39) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import mechanize
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named mechanize
>>> 

我之前运行的安装报告已成功完成,因此我预计导入会成功。什么原因导致了此错误?


解决方案 1:

就我的情况来说,这是权限问题。不知何故,该软件包仅以 root 读写权限安装,其他用户无法读写它!

解决方案 2:

我遇到了同样的问题:带有的脚本import colorama抛出了ImportError,但sudo pip install colorama告诉我“包已安装”。

我的解决方法:运行不带 sudo 的pip : pip install colorama。然后 pip 同意需要安装它,然后安装它,然后我的脚本运行。

或者更好的是,使用python -m pip install <package>。这样做的好处是,由于您正在执行想要安装包的特定版本的 Python,pip 将明确地将包安装到“正确的”Python 中。同样,在这种情况下不要使用sudo...然后您会在正确的位置获得包,但可能具有(不需要的)root 权限。

我的环境是 Ubuntu 14.04 32 位;我想我在激活虚拟环境之前和之后看到了这个。

解决方案 3:

我能够通过组合方法来纠正这个问题。首先,我按照 Chris 的建议,打开命令行并输入“pip show packagename”,这提供了已安装包的位置。

接下来,我打开 Python,输入“import sys”,然后输入“sys.path”,以显示 Python 在哪里搜索我导入的任何包。可惜的是,第一步中显示的位置不在列表中。

最后一步,我输入了“sys.path.append('package_location_seen_in_step_1')。您可以选择重复第二步来查看列表中的位置。

测试步骤,尝试再次导入包...它有效。

缺点呢?它是暂时的,每次你都需要将其添加到列表中。

解决方案 4:

这是python路径的问题。

就我而言,我将 Python 安装在:

/Library/Frameworks/Python.framework/Versions/2.6/bin/python,

并且python2.6中没有site-packages目录。

我通过 pip 安装的包(SOAPpy)位于

/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/

并且 site-package 不在 python 路径中,我所做的就是将 site-packages 永久添加到 PYTHONPATH 中。

  1. 打开终端

  2. 键入 open .bash_profile

  3. 在弹出的文本文件中,在末尾添加以下行:

export PYTHONPATH=$PYTHONPATH:/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/
  1. 保存文件,重启终端,就完成了

解决方案 5:

Python 导入机制确实有效,因此,可以:

  1. 你的 PYTHONPATH 是错误的,

  2. 您的库未安装在您认为的位置

  3. 您有另一个同名的库掩盖了这个库

解决方案 6:

我一直为此绞尽脑汁,直到一位年轻实习生告诉我秘诀是在模块目录中“python setup.py install”。

出于某种原因,从那里运行设置使其正常工作。

要清楚的是,如果你的模块名称是“foo”:

[burnc7 (2016-06-21 15:28:49) git]# ls -l
total 1
drwxr-xr-x 7 root root  118 Jun 21 15:22 foo
[burnc7 (2016-06-21 15:28:51) git]# cd foo
[burnc7 (2016-06-21 15:28:53) foo]# ls -l
total 2
drwxr-xr-x 2 root root   93 Jun 21 15:23 foo
-rw-r--r-- 1 root root  416 May 31 12:26 setup.py
[burnc7 (2016-06-21 15:28:54) foo]# python setup.py install
<--snip-->

如果您尝试通过调用其路径从任何其他目录运行setup.py,最终会导致安装失败。

不起作用:

python /root/foo/setup.py install

确实有效:

cd /root/foo
python setup.py install

解决方案 7:

我在尝试使用通过 安装的密钥环时遇到了这个问题sudo pip install keyring。正如其他答案中提到的,在我的情况下,这是一个权限问题。

对我有用的是:

  1. 卸载的密钥环:

  • sudo pip uninstall keyring

  1. 我使用了 sudo 的-H选项并重新安装了密钥环:

  • sudo -H pip install keyring

解决方案 8:

检查 IDE 或代码编辑器的解释器和系统上是否使用了相同的 Python 版本。例如,使用以下命令在终端中检查 Python 版本,python3 --version
然后通过以下方式在 VSCode 中检查解释器的 Python 版本cmd+shift+p-> Python:选择解释器 -> 选择与终端中看到的相同的版本。在此处输入图片描述

解决方案 9:

在 PyCharm 中,我通过更改项目解释器路径解决了这个问题。

File -> Settings -> Project -> Project Interpreter

File -> Invalidate Caches…之后可能需要。

解决方案 10:

我无法使我的 PYTHONPATH 正常工作。我意识到添加以下内容export可以修复该问题:

(确实有效)

export PYTHONPATH=$PYTHONPATH:~/test/site-packages

对阵

(无效)

PYTHONPATH=$PYTHONPATH:~/test/site-packages

解决方案 11:

重新定位的虚拟环境(venv)也可能出现此问题。

我有一个在根目录中设置了 venv 的项目。后来我创建了一个新用户,并决定将项目移至该用户。我没有只移动源文件并重新安装依赖项,而是将整个项目连同 venv 文件夹一起移至新用户。

之后,我安装的依赖项被添加到全局site-packages文件夹而不是 venv 内的文件夹,因此在此环境中运行的代码无法访问这些依赖项。

要解决这个问题,只需删除 venv 文件夹并重新创建它,如下所示:

$ deactivate
$ rm -rf venv
$ python3 -m venv venv
$ source venv/bin/activate
$ pip install -r requirements.txt

解决方案 12:

对我有用的是:

python -m pip install -user {package name}

该命令不需要 sudo。这已在 OSX Mojave 上进行了测试。

解决方案 13:

就我而言,我已经运行了pip install Django==1.11,但它不会从python解释器中导入。

浏览 pip 的命令我发现pip show它看起来像这样:

> pip show Django
Name: Django
Version: 1.11
...
Location: /usr/lib/python3.4/site-packages
...

注意位置显示“3.4”。我发现 -commandpython链接到python2.7

/usr/bin> ls -l python
lrwxrwxrwx 1 root root 9 Mar 14 15:48 python -> python2.7

就在旁边,我发现了一个名为 的链接python3,所以我使用了它。您也可以将链接更改为python3.4。这也可以解决问题。

解决方案 14:

我通过 pip 安装了 colorama,但出现了“ImportError: 没有名为 colorama 的模块”

因此我用“find”进行搜索,找到了绝对路径并将其添加到脚本中,如下所示:

import sys
sys.path.append("/usr/local/lib/python3.8/dist-packages/")
import colorama 

而且它确实有效。

解决方案 15:

我遇到了同样的问题,更新setuptools有帮助:

python3 -m pip install --upgrade pip setuptools wheel

此后,重新安装该软件包,它就应该正常工作了:)

问题在于,如果包setuptools很旧,那么包的构建就会不正确。

解决方案 16:

__init__.py就我而言,这是模块中缺少文件的问题,我想在 Python 2.7 环境中导入该文件。

Python 3.3+ 具有隐式命名空间包,允许它创建没有文件的包__init__.py

解决方案 17:

也有这个问题。该包安装在 Python 3.8.0 上,但 VS Code 使用旧版本(3.4)运行我的脚本

在终端修复:

py <yourfile>.py

确保您在正确的 Python 版本上安装该包。

解决方案 18:

如果提到的其他答案对您不起作用,请尝试删除您的 pip 缓存并重新安装包。我的机器运行的是 Ubuntu14.04,它位于 下~/.cache/pip。删除这个文件夹对我来说很管用。

解决方案 19:

另外,请确保不要pip3与混淆pip。我发现使用 安装的软件包pip无法与 一起使用python3,反之亦然。

解决方案 20:

我遇到过类似的问题(在 Windows 上),而我遇到的根本原因是防病毒软件!它具有“自动遏制”功能,可将正在运行的进程与某种虚拟机包装在一起。症状是:pip install somemodule在一个命令行窗口中运行良好,但从import somemodule另一个进程执行时失败并出现错误

ModuleNotFoundError: No module named 'somemodule'

解决方案 21:

就我的情况而言(WIN10 主机上的 Ubuntu 20.04 VM),我遇到了混乱的情况,安装了许多版本的 Python 和各种共享库(在文件系统的许多点使用 pip 安装)。我指的是 3.8.10 Python 版本。经过多次测试,我在谷歌搜索时找到了一个建议(但很抱歉,我没有链接)。这是我为解决问题所做的:

  1. 从 Ubuntu 20.04 VM 上的 shell 会话(在 Home 内部,在我的情况下是 /home/hduser),我使用命令“jupyter notebook”启动了 Jupyter Notebook 会话。

  2. 然后,当 jupyter 运行时,我打开了一个 .ipynb 文件来发出命令。

  3. 首先:pip list --> 给我已安装的软件包列表,但是,sympy 不存在(尽管我已经使用“sudo pip install sympy”命令安装了它。

  4. 最后使用命令 !pip3 install sympy (在 jupyter notebook 会话中)我解决了这个问题,这里是屏幕截图:
    在此处输入图片描述

  5. 现在,使用 !pip list 可以发现包“sympy”已经存在,并且可以正常运行:
    在此处输入图片描述

解决方案 22:

在我的例子中,我假设包已安装,因为它出现在 的输出中pip freeze。然而,site-packages/*.dist-info尽管缺少实际的包内容(可能是由于意外删除),但仅文件夹就足以让 pip 将其列为已安装。即使所有路径设置都正确,也会发生这种情况,如果您尝试,pip install <pkg>它会说“要求已满足”。

解决方案是手动删除dist-info文件夹,以便 pip 意识到包内容丢失。然后,重新安装应该会重新填充意外删除的所有内容

解决方案 23:

不确定这是否会对任何人有所帮助,但我在 Mac M1 上使用 zsh 时遇到了类似的问题。原来我在 .zshrc 文件中设置了一个与我的 python 命令 (python3) 同名的别名命令。

为了解决这个问题,我只需要取消命令的别名。我运行了:

unalias python3

无论是从我的家庭终端还是从 Visual Studio 中的终端。

解决方案 24:

我通过在终端上调用以下命令解决了这个问题

eval "$(conda shell.bash hook)"

解决方案 25:

当您通过easy_install或安装时pip,是否成功完成?完整输出是什么?您使用的是哪个 python 安装?sudo如果您要将模块安装到系统目录(如果您使用的是系统 python 安装,则可能需要在安装命令之前使用)。您的问题中没有太多有用的信息,但一些可能有帮助的工具包括:

  • echo $PYTHONPATH和/或echo $PATH:导入模块时,Python 会搜索这些环境变量(目录列表,带分隔符)之一:以查找所需的模块。导入问题通常是由于这些列表中缺少正确的目录造成的

  • which pythonwhich pipwhich easy_install:这些会告诉您每个可执行文件的位置。了解这些可能会有所帮助。

  • 使用virtualenv,就像 @JesseBriggs 建议的那样。它非常适合pip帮助您隔离和管理单独的 Python 项目的模块和环境。

解决方案 26:

我遇到了同样的问题,但上述所有答案都不起作用。这让我很抓狂,直到我注意到从父项目导入后 sys.path 发生了变化。原来我使用 importlib 编写了一个小函数来导入不在项目层次结构中的文件。坏主意:我忘了自己做过这件事。更糟糕的是,导入过程弄乱了 sys.path——并保持原样。非常糟糕的主意。

解决方案是停止这种情况,只需将我需要导入的文件放入项目中即可。另一种方法是将文件放入其自己的项目中,因为它需要不时重建,并且重建可能与主项目的重建一致,也可能不一致。

解决方案 27:

我在系统上安装了 2.7 和 3.5 并尝试使用Python-Telegram-Bot测试电报机器人时遇到了这个问题。

使用 pip 和 pip3 安装后,无论是否使用 sudo,我都无法让它工作。我总是得到:

Traceback (most recent call last):
  File "telegram.py", line 2, in <module>
    from telegram.ext import Updater
  File "$USER/telegram.py", line 2, in <module>
    from telegram.ext import Updater
ImportError: No module named 'telegram.ext'; 'telegram' is not a package

正确阅读错误消息告诉我,python 正在当前目录中查找telegram.py。没错,我有一个名为 telegram.py 的脚本,当我调用时,python 会加载它import

package.py结论,尝试导入时,请确保当前工作目录中没有任何内容。(并仔细阅读错误信息)。

解决方案 28:

我在使用 Django 时也遇到了类似的问题。就我而言,我可以从 Django shell 导入模块,但不能从导入模块的 .py 导入。问题是我从安装模块的不同虚拟环境

中运行 Django 服务器(因此执行 .py) 。

相反,shell 实例在正确的虚拟环境中运行。因此,它才有效。

解决方案 29:

这有效!

当模块安装到旧版本的 Python 或其他目录时,通常会发生这种情况,不用担心,因为解决方案很简单。 - 从安装模块的目录中导入模块。您可以先导入 Pythonsys模块,然后从安装模块的路径导入

import sys
sys.path.append("directory in which module is installed")

import <module_name>

解决方案 30:

大多数可能的情况已经在解决方案中涵盖,只是分享我的情况,我碰巧在一个环境中安装了一个包(例如X),然后在另一个环境中导入了该包(例如Y)。因此,请务必确保从安装包的环境中导入包。

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   1565  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1354  
  信创国产芯片作为信息技术创新的核心领域,对于推动国家自主可控生态建设具有至关重要的意义。在全球科技竞争日益激烈的背景下,实现信息技术的自主可控,摆脱对国外技术的依赖,已成为保障国家信息安全和产业可持续发展的关键。国产芯片作为信创产业的基石,其发展水平直接影响着整个信创生态的构建与完善。通过不断提升国产芯片的技术实力、产...
国产信创系统   21  
  信创生态建设旨在实现信息技术领域的自主创新和安全可控,涵盖了从硬件到软件的全产业链。随着数字化转型的加速,信创生态建设的重要性日益凸显,它不仅关乎国家的信息安全,更是推动产业升级和经济高质量发展的关键力量。然而,在推进信创生态建设的过程中,面临着诸多复杂且严峻的挑战,需要深入剖析并寻找切实可行的解决方案。技术创新难题技...
信创操作系统   27  
  信创产业作为国家信息技术创新发展的重要领域,对于保障国家信息安全、推动产业升级具有关键意义。而国产芯片作为信创产业的核心基石,其研发进展备受关注。在信创国产芯片的研发征程中,面临着诸多复杂且艰巨的难点,这些难点犹如一道道关卡,阻碍着国产芯片的快速发展。然而,科研人员和相关企业并未退缩,积极探索并提出了一系列切实可行的解...
国产化替代产品目录   28  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用