安装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
>>>
我之前运行的安装报告说它们已成功完成,因此我希望导入能够正常运行。可能导致此错误的原因是什么?
答案 0 :(得分:72)
在我的情况下,这是许可问题。该软件包以某种方式仅以root rw权限安装,其他用户无法使用它!
答案 1 :(得分:51)
我遇到了同样的问题:import colorama
的脚本正在抛出和ImportError,但sudo pip install colorama
告诉我“已安装包”。
我的修复:运行点没有sudo :pip install colorama
。然后pip同意它需要安装,安装它,我的脚本运行。
我的环境是Ubuntu 14.04 32位;我想在激活我的virtualenv之前和之后都看到了这个。
更新:更好,请使用python -m pip install <package>
。这样做的好处是,因为你正在执行你希望包中的特定版本的python,pip将明确地将包安装到“正确”的python中。同样,在这种情况下不使用sudo ...然后你在正确的地方获得包,但可能有(不需要的)root权限。
答案 2 :(得分:13)
这是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路径中,我所做的就是永久地将站点包添加到PYTHONPATH。
在弹出的文本文件中,在末尾添加以下行:
export PYTHONPATH = $ PYTHONPATH:/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages /
答案 3 :(得分:5)
Python导入机制确实可行,所以:
答案 4 :(得分:5)
我一直在敲打我的显示器,直到一位年轻的实习生告诉我秘密是在模块目录中“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,则最终会进行borked安装。
不工作:
python /root/foo/setup.py install
工作:
cd /root/foo
python setup.py install
答案 5 :(得分:3)
我在尝试使用通过sudo pip install keyring
安装的密钥环时遇到此问题。如其他答案所述,就我而言,这是一个权限问题。
对我有用的东西
sudo pip uninstall keyring
-H
选项并重新安装了密钥环:
sudo -H pip install keyring
希望这会有所帮助。
答案 6 :(得分:2)
我无法让我的PYTHONPATH正常工作。我意识到添加export
解决了这个问题:
(干预了)
export PYTHONPATH=$PYTHONPATH:~/test/site-packages
VS
(没用)
PYTHONPATH=$PYTHONPATH:~/test/site-packages
答案 7 :(得分: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
- 命令已链接到python2.7
/usr/bin> ls -l python
lrwxrwxrwx 1 root root 9 Mar 14 15:48 python -> python2.7
就在旁边,我发现了一个名为python3
的链接,所以我使用了它。您还可以将链接更改为python3.4
。这也可以解决它。
答案 8 :(得分:2)
我能够通过组合方法纠正这个问题。首先,我按照Chris的建议,打开命令行并输入'pip show packagename' 这提供了已安装包的位置。
接下来,我打开python并输入'import sys',然后输入'sys.path'来显示我的python搜索我导入的任何包的位置。唉,第一步显示的位置不在列表中。
最后一步,我输入'sys.path.append('package_location_seen_in_step_1')。您可以选择重复第二步,以查看该位置现在是否在列表中。
测试步骤,尝试再次导入包...它可以工作。
缺点?这是暂时的,您需要每次都将其添加到列表中。
答案 9 :(得分:1)
就我而言,这是一个问题,我想在Python 2.7环境中导入模块中的 init .py文件。
Python 3.3+具有隐式命名空间软件包,这些软件包允许它创建没有 init .py文件的软件包。
答案 10 :(得分:1)
如果上述其他答案对您不起作用,请尝试删除点子缓存并重新安装软件包。我的机器运行Ubuntu14.04,位于~/.cache/pip
下。删除此文件夹对我有用。
答案 11 :(得分:1)
我是python的新手。
我通过更改项目解释器路径解决了此问题。
File -> Settings -> Project -> Project Interpreter
答案 12 :(得分:0)
就我而言,我还必须为超级用户安装模块。
sudo su
pip install <module>
在某些情况下,超级用户显然无法访问普通用户文件。
答案 13 :(得分:0)
此解决方案并不适用于所有人。仅适用于一组特定的新手(LIKE ME),他们执行了一组特定的操作。上面的答案对我都不起作用。
那是什么引起问题:以前,我有一个项目,其根目录下有venv安装程序。后来,我创建了一个新用户,并决定将项目移至该用户。我将整个项目连同venv文件夹一起移至新用户,而不是仅移动源文件并重新安装依赖项(因为我不知道这些问题)。之后,我安装的依赖项被添加到global site-packages
中,而不是venv文件夹中的依赖项中。因此,在此env中运行的代码无法访问那些依赖项。
解决方案:只需删除venv文件夹,然后重新创建即可。
$ deactivate
$ rm -rf venv
$ python3 -m venv venv
$ source venv/bin/activate
$ pip install -r requirements.txt
答案 14 :(得分:0)
对我有用的最简单的解决方案,在该线程中没有提到:
我安装了多个版本的Python,但尝试使用Python3.7-所以我不得不使用:
sudo pip3.7 install <package>
答案 15 :(得分:0)
就像今天的朋友为我所做的那样,这是对我有所帮助的东西(我正在使用Windows):
按“设置”->“项目”->“项目解释器”。在右边的窗口中,左边有一行标题为“ Project Interpreter”的行。单击此行,它将另外打开几行。
现在按“显示全部”行。将会打开一个窗口。 在此窗口中,按右上角的小“ +”号。
将打开一个新窗口。在左侧,有4个选项卡,按最上面的一个,即“ Virtualenv Environment”。 现在,在右侧窗口中,标记“现有环境”选项。 “翻译”行将变得清晰可见。按下该行右侧的“ ...”按钮。
现在,将打开一个浏览窗口。浏览到您自己安装了Python的目录。不是拥有PyCharm的人。到那里后,选择“ python.exe”文件,然后按OK(该窗口将消失)。
再次按“确定”(此窗口也会消失)。
现在在此窗口中,确保已标记您创建的新行,然后再次按OK。
现在,所有已安装的软件包都应该在项目解释器中可见,并由程序读取。
答案 16 :(得分:0)
也存在此问题。.该软件包已安装在Python 3.8.0上,但VS Code使用较旧的版本(3.4)运行我的脚本
在终端中修复:
py .py
确保您在正确的Python版本上安装了软件包
答案 17 :(得分:0)
此外,请确保不要将pip3
与pip
混淆。我发现与pip
一起安装的软件包不能与python3
一起使用,反之亦然。
答案 18 :(得分:0)
如果您使用的是虚拟环境,请使用pipenv install <module name>
代替pip install <module name>
为我工作。
答案 19 :(得分:0)
我已经解决了我的问题,即相同的库在一个项目(A)中运行良好,但是将这些相同的库导入到另一个项目(B)中会导致错误。我在Windows OS上使用Pycharm作为IDE。 因此,在尝试了许多潜在的解决方案并且未能解决问题后,我做了这两件事(删除了“ Venv”文件夹,并重新配置了解释器):
1-在项目(B)中,位于外部库/中有一个名为(“ venv”)的文件夹。我删除了那个文件夹。
2-步骤1(删除“ venv”文件夹)在Python解释器配置中导致错误,并且 屏幕顶部显示一条消息,提示“选择了无效的python解释器 对于项目”和“配置python解释器”,请选择该链接,然后打开一个 新窗户。在“项目解释器”下拉列表中,有一条红色的线 显示先前的无效解释器。现在,打开此列表并选择Python 解释器(在我的情况下是Python 3.7)。按底部的“应用”和“确定”,然后 很好。
注意:这可能是我的项目(B)的虚拟环境无法识别已经安装且正在运行的库的问题。
答案 20 :(得分:0)
我知道这是一篇非常老的文章,但对我来说,我遇到了安装32位python和64位python的问题。卸载32位python后,一切正常。
答案 21 :(得分:0)
对我来说,这是确保模块的版本与我使用的Python版本保持一致。.我使用Python 3.6 将图像构建在一个盒子上,然后注入发生的Docker图像中先安装 3.7 ,然后在Python告诉我未安装模块时敲打我的头...
draggable="false"
对于Python 3.6
36m
bsonnumpy.cpython-36m-x86_64-linux-gnu.so
for Python 3.7 37m
答案 22 :(得分:0)
我有类似的问题(在Windows上),我的案例的根本原因是 ANTIVIRUS 软件!它具有“Auto-Containment”功能,可以使用某种虚拟机包装运行进程。
症状是:pip install somemodule
在一个cmd行窗口中正常工作,import somemodule
在从另一个进程执行时失败,错误
ModuleNotFoundError: No module named 'somemodule'
我希望它会节省一些时间给某人:)
答案 23 :(得分:0)
对我有用的是:
python -m pip install -user {package name}
该命令不需要sudo。这已在OSX Mojave上进行了测试。
答案 24 :(得分:0)
解决方案中已经涵盖了大多数可能的情况,只是分享我的情况,我碰巧在一个环境(例如X
)中安装了一个程序包,而在另一个环境中导入了该程序包(例如Y
)。因此,始终确保要从安装软件包的环境中导入软件包。
答案 25 :(得分:0)
这有效!!!
这通常发生在将模块安装到旧版本的python或其他目录中时,因为解决方案很简单,所以不用担心。
-从安装模块的目录中导入模块。
为此,您可以先导入python sys
模块,然后从模块安装路径导入
import sys
sys.path.append("directory in which module is installed")
import <module_name>
答案 26 :(得分:0)
我在使用Django时遇到类似的问题。就我而言,我可以从Django shell导入模块,但不能从导入模块的.py导入。
问题是我正在从安装了模块的不同virtualenv 运行Django服务器(因此,执行.py)。
相反,shell实例是在正确的virtualenv中运行的。因此,它为什么起作用。
答案 27 :(得分:0)
我有这个确切的问题,但上面的答案都没有奏效。它引起了我的疯狂,直到我注意到从父项目导入后sys.path不同。事实证明,我曾使用importlib编写一个小函数,以便导入不在项目层次结构中的文件。不好的主意:我忘记了我做过这件事。更糟糕的是,导入过程与sys.path混乱 - 并保持这种方式。 非常坏主意。
解决方案是停止它,只需将我需要导入的文件放入项目中。另一种方法是将文件放入自己的项目中,因为它需要不时地重建,并且重建可能与主项目的重建相同或不一致。
答案 28 :(得分:0)
也许有点题外话,但是我对import PyYAML
有疑问。指出您需要import yaml
。 (猜测这是经典的rtfm ...)
答案 29 :(得分: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的脚本,当我打电话给import
时,这是由python加载的。
结论,确保在尝试导入时,当前工作目录中没有任何package.py
。 (并彻底阅读错误消息)。
答案 30 :(得分:-1)
当您通过easy_install
或pip
安装时,是否已成功完成?什么是完整输出?你使用哪个python安装?如果要将模块安装到系统目录(如果使用的是系统python安装),则可能需要在安装命令之前使用sudo
。你的问题中没有很多有用的信息可供使用,但一些可能有用的工具包括:
echo $PYTHONPATH
和/或echo $PATH
:在导入模块时,Python会搜索所需模块的其中一个环境变量(目录列表,:
分隔)。导入问题通常是由于这些列表中没有正确的目录
which python
,which pip
或which easy_install
:这些将告诉您每个可执行文件的位置。知道可能会有所帮助。
使用virtualenv ,就像@JesseBriggs建议的那样。它与pip
非常兼容,可以帮助您隔离和管理单独的Python项目的模块和环境。
答案 31 :(得分:-1)
我通过pip安装了colorama,并且得到了“ ImportError:没有名为colorama的模块”
因此,我使用“查找”进行搜索,找到了绝对路径,并将其添加到脚本中,如下所示:
import sys
sys.path.append("/usr/local/lib/python3.8/dist-packages/")
import colorama
它奏效了。
答案 32 :(得分:-6)
如果您学习如何使用virtualenv(这非常简单),您将会遇到更少的问题。你只需要使用virtualenv,然后你将使用本地(到项目)包。
通过路径,版本等解决了很多令我头痛的问题。