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

我已经尝试从pip、easy_install和通过python setup.py从这个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
>>> 

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


当前回答

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

python3 -m pip install --upgrade pip setuptools wheel

之后,重新安装包,它应该可以正常工作:)

问题是,如果setuptools是旧的,那么包就会不正确地构建。

其他回答

在重新定位的虚拟环境(venv)中也会出现此问题。

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

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

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

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

我在使用Django时也遇到了类似的问题。在我的例子中,我可以从Django shell中导入模块,但不能从导入模块的.py中导入。 问题是我在安装模块的另一个virtualenv上运行Django服务器(因此,执行.py)。

相反,shell实例在正确的virtualenv中运行。这就是为什么它有效的原因。

也许有点跑题了,但我在导入PyYAML时遇到了问题。指出你需要导入yaml。(我猜是经典的rtfm…)

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

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

2-Step 1 (deleting "venv" folder) causes error in Python Interpreter Configuration, and there is a message shown at top of screen saying "Invalid python interpreter selected for the project" and "configure python interpreter", select that link and it opens a new window. There in "Project Interpreter" drop-down list, there is a Red colored line showing previous invalid interpreter. Now, Open this list and select the Python Interpreter(in my case, it is Python 3.7). Press "Apply" and "OK" at the bottom and you are good to go.

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

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

我的解决方案:运行pip没有sudo: pip安装colorama。然后pip同意需要安装它,安装了它,我的脚本运行了。

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

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