在安装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
>>>
我之前运行的安装报告已经成功完成,因此我希望导入能够正常工作。是什么导致了这个错误?
在重新定位的虚拟环境(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
在我的例子中,我运行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。这也能解决问题。