192

安装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
>>> 

我之前运行的安装报告它们已成功完成,因此我希望导入能够正常工作。什么可能导致此错误?

4

34 回答 34

123

就我而言,这是权限问题。该软件包以某种方式仅以root rw权限安装,其他用户无法对其进行rw!

于 2013-05-04T17:55:33.507 回答
108

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

我的解决方法:在没有 sudo的情况下运行 pip : pip install colorama。然后 pip 同意它需要安装,安装它,然后我的脚本运行。

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

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

于 2016-01-14T19:12:47.353 回答
27

这是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/

并且站点包不在 python 路径中,我所做的只是将站点包永久添加到 PYTHONPATH 中。

  1. 打开终端

  2. 键入 open .bash_profile

  3. 在弹出的文本文件中,在最后添加这一行:

    export PYTHONPATH=$PYTHONPATH:/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/
    
  4. 保存文件,重启终端,大功告成

于 2014-04-22T17:45:22.257 回答
19

Python 导入机制确实有效,所以,要么:

  1. 你的 PYTHONPATH 是错误的,
  2. 您的库未安装在您认为的位置
  3. 您有另一个同名的库掩盖了这个库
于 2013-01-12T17:19:35.650 回答
17

我能够用一种综合方法来纠正这个问题。首先,我听从了 Chris 的建议,打开命令行并输入 'pip show packagename' 这提供了已安装包的位置。

接下来,我打开 python 并输入“import sys”,然后输入“sys.path”来显示我的 python 搜索我导入的任何包的位置。唉,第一步中显示的位置不在列表中。

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

测试步骤,尝试再次导入包......它的工作原理。

不足之处?它是临时的,您每次都需要将其添加到列表中。

于 2018-04-01T20:19:26.200 回答
13

我一直在用我的头撞我的显示器,直到一个年轻的实习生告诉我秘密是在模块目录中安装“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
于 2016-06-21T22:32:23.230 回答
7

我在尝试使用通过sudo pip install keyring. 正如其他答案中提到的,在我的情况下这是一个权限问题。

什么对我有用:

  1. 已卸载的密钥环:
  • sudo pip uninstall keyring
  1. 我使用了 sudo 的-H选项并重新安装了密钥环:
  • sudo -H pip install keyring
于 2018-09-04T05:56:08.280 回答
6
于 2019-02-27T18:40:46.257 回答
3

我无法让我的 PYTHONPATH 正常工作。我意识到添加export解决了这个问题:

(确实工作)

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

对比

(不工作)

PYTHONPATH=$PYTHONPATH:~/test/site-packages
于 2016-12-06T16:32:31.883 回答
3

对我有用的是:

python -m pip install -user {package name}

该命令不需要 sudo。这是在 OSX Mojave 上测试的。

于 2019-08-19T21:35:37.837 回答
2

就我而言,我已经运行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”。我发现python-command 链接到python2.7

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

在旁边,我找到了一个名为的链接,python3所以我使用了它。您也可以将链接更改为python3.4. 那也可以解决它。

于 2017-04-06T14:05:07.317 回答
2

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

Python 3.3+ 具有隐式命名空间包,允许它在没有init .py 文件的情况下创建包。

于 2019-04-26T09:26:18.177 回答
1

另外,请确保不要pip3pip. 我发现安装的软件包pip无法使用python3,反之亦然。

于 2019-11-14T14:14:03.283 回答
1

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

在终端中修复:

py.py

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

于 2019-11-21T20:39:49.913 回答
1

我通过 pip 安装了 colorama 并且收到“ImportError:没有名为 colorama 的模块”

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

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

它奏效了。

于 2020-08-25T13:01:32.363 回答
1

此解决方案并不适用于所有人。仅适用于执行特定操作的一组特定新手(如我)。以上答案都不适合我。

那么是什么导致了这个问题:以前我有一个在根目录下设置 venv 的项目。后来我创建了一个新用户并决定将项目移至该用户。而不是只移动源文件并重新安装依赖项,我将整个项目连同 venv 文件夹一起移动到了新用户(因为我不知道这些问题)。之后,我安装的依赖项被添加到venv 文件夹中,global site-packages而不是添加到 venv 文件夹中。因此,在此环境中运行的代码无法访问这些依赖项。

解决方案:刚刚删除了 venv 文件夹并重新创建了它。

    $ deactivate
    $ rm -rf venv
    $ python3 -m venv venv
    $ source venv/bin/activate
    $ pip install -r requirements.txt
于 2020-11-24T05:34:35.403 回答
1

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

于 2019-08-07T01:29:08.033 回答
0

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

  • echo $PYTHONPATH和/或echo $PATH:导入模块时,Python 会在这些环境变量(目录列表,:分隔的)之一中搜索您想要的模块。导入问题通常是由于这些列表中缺少正确的目录

  • which python, which pip, or which easy_install: 这些会告诉你每个可执行文件的位置。了解可能会有所帮助。

  • 使用virtualenv,就像@JesseBriggs 建议的那样。它可以很好pip地帮助您隔离和管理单独 Python 项目的模块和环境。

于 2013-01-12T17:26:56.890 回答
0

我已经解决了我的问题,即相同的库在一个项目(A)中运行良好,但在另一个项目(B)中导入这些相同的库导致错误。我在 Windows 操作系统中使用 Pycharm 作为 IDE。因此,在尝试了许多潜在的解决方案并未能解决问题后,我做了这两件事(删除了“Venv”文件夹,并重新配置了解释器):

1-在项目(B)中,有一个名为(“venv”)的文件夹,位于外部库/。我删除了那个文件夹。

2-步骤 1(删除“venv”文件夹)导致 Python 解释器配置出错,屏幕顶部显示一条消息,显示“为项目选择的 Python 解释器无效”和“配置 Python 解释器”,选择该链接并将其打开一个新窗口。在“项目解释器”下拉列表中,有一条红色线显示以前的无效解释器。现在,打开这个列表并选择 Python 解释器(在我的例子中,它是 Python 3.7)。按底部的“应用”和“确定”,您就可以开始了。

注意:这可能是我的项目(B)的虚拟环境无法识别已安装和工作的库的问题。

于 2019-09-29T12:06:29.760 回答
0

我知道这是一篇超级旧的帖子,但对我来说,我安装了 32 位 python 和 64 位 python 时遇到了问题。卸载 32 位 python 后,一切正常。

于 2019-09-24T13:18:50.393 回答
0

This Works!!!

This often happens when module is installed to an older version of python or another directory, no worries as solution is simple. - import module from directory in which module is installed. You can do this by first importing the python sys module then importing from the path in which the module is installed

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

import <module_name>
于 2019-07-04T01:56:18.810 回答
0

如果您使用的是虚拟环境,请使用pipenv install <module name>而不是pip install <module name>

为我工作。

于 2019-10-04T10:08:53.400 回答
0

对我来说,它确保模块的版本与我使用的 Python 版本保持一致。我在一个带有 Python 3.6的盒子上构建了图像,然后注入到恰好安装了3.7的 Docker 图像中,然后敲了敲我的头当 Python 告诉我模块没有安装时......

36m对于 Python 3.6 bsonnumpy.cpython-36m-x86_64-linux-gnu.so

37m对于 Python 3.7bsonnumpy.cpython-37m-x86_64-linux-gnu.so

于 2019-09-18T15:43:36.993 回答
0

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

于 2019-08-02T16:45:14.707 回答
0

我在系统上安装了 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 的脚本,当我调用 .py 时,它是由 python 加载的import

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

于 2017-01-10T07:09:29.103 回答
0

正如今天一位朋友为我所做的那样,这对我有帮助(我使用的是 Windows):

按“设置”->“项目”->“项目解释器”。在右侧的窗口中,左侧有一行标题为“Project Interpreter”。单击此行,它将打开另外几行。

现在按“全部显示”行。将打开一个窗口。在此窗口中,按右上角的小“+”号。

将打开一个新窗口。左边有 4 个选项卡,按最上面的一个,上面写着“Virtualenv Environment”。现在,在右侧的窗口中,标记“现有环境”选项。“解释器”行将变得清晰可见。按行右侧的“...”按钮。

现在,将打开一个浏览窗口。浏览到您在其中安装 Python 本身的目录。不是 PyCharm 的那个。当您到达那里时,选择“python.exe”文件并按 OK(窗口将消失)。

再次按 OK(此窗口也会消失)。

现在在此窗口中确保您创建的新行已标记,然后再次按 OK。

现在,所有已安装的包都应该在项目解释器中可见,并且可以被您的程序读取。

于 2019-12-22T13:02:24.833 回答
0

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

ModuleNotFoundError: No module named 'somemodule'
于 2018-05-07T06:42:49.000 回答
0

在我的情况下(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”存在,并且正在工作: 在此处输入图像描述

于 2022-01-09T11:43:33.163 回答
0

我遇到了这个确切的问题,但上面的答案都没有奏效。它让我发疯,直到我注意到 sys.path 在我从父项目导入后有所不同。原来,我使用 importlib 编写了一个小函数,以便导入不在项目层次结构中的文件。坏主意:我忘记了我做过这个。更糟糕的是,导入过程与 sys.path 混为一谈——然后就这样离开了。非常糟糕的主意。

解决方案是阻止它,只需将我需要导入的文件放入项目中。另一种方法是将文件放入自己的项目中,因为它需要不时重建,并且重建可能会或可能不会与主项目的重建重合。

于 2016-04-17T19:08:39.353 回答
0

我在使用 Django 时遇到了类似的问题。就我而言,我可以从 Django shell 导入模块,但不能从导入模块的 .py 导入。
问题是我正在从安装模块的不同 virtualenv运行 Django 服务器(因此,执行 .py)。

相反,shell 实例在正确的 virtualenv 中运行。因此,它为什么起作用。

于 2019-05-09T17:41:29.407 回答
-1

就我而言,我还必须为超级用户安装模块。

sudo su
pip install <module>

显然,在某些情况下,超级用户无法访问普通用户文件。

于 2019-09-14T18:50:36.513 回答
-1

也许有点题外话,但我有问题import PyYAML。指出你需要import yaml。(猜猜这是经典的rtfm ...)

于 2019-01-04T09:32:42.953 回答
-1

对我有用的最简单的解决方案,我在这个线程中没有看到:

我安装了多个版本的 Python,但试图使用 Python3.7——所以我不得不使用:

sudo pip3.7 install <package>

于 2020-02-03T21:38:05.893 回答
-16

如果你学会了如何使用 virtualenv(这非常简单),你就会减少这些问题。您只需获取 virtualenv,然后您将使用本地(项目)包。

它为我解决了很多关于路径、版本等问题。

于 2013-01-12T17:18:56.597 回答