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

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


当前回答

就我而言,这是许可问题。软件包以某种方式安装,只有根读写权限,其他用户不能读写它!

其他回答

我一直在用脑袋撞显示器,直到一个年轻的实习生告诉我,秘诀是在模块目录中“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

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

文件->设置->项目->项目解释器

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

在我的情况下,我还必须为超级用户安装模块。

sudo su
pip install <module>

显然,superuse在某些情况下不能访问普通用户的文件。

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

python3 -m pip install --upgrade pip setuptools wheel

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

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

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

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

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

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