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

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


当前回答

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

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

其他回答

我通过一种组合方法纠正了这个问题。首先,我听从克里斯的建议,打开命令行,输入“pip show packagename” 这提供了已安装包的位置。

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

最后一步,我输入“sys.path.append('package_location_seen_in_step_1')”。您可以选择重复步骤2,以查看位置现在在列表中。

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

缺点呢?它是临时的,每次都需要将其添加到列表中。

在我的情况下(WIN10主机上的Ubuntu 20.04虚拟机),我有一个混乱的情况,安装了许多版本的Python和不同点的共享库(在文件系统的许多点安装pip)。我指的是3.8.10 Python版本。 经过多次测试,我用谷歌搜索发现了一个建议(但是“对不起,我没有链接”)。下面是我为解决这个问题所做的:

From shell session on Ubuntu 20.04 VM, (inside the Home, in my case /home/hduser), I've started a Jupyter Notebook session with the command "jupyter notebook". Then, when jupyter was running I've opened a .ipynb file to give commands. First : pip list --> give me the list of packages installed, and, sympy wasn't present (although I had installed it with "sudo pip install sympy" command. Last with the command !pip3 install sympy (inside jupyter notebook session) I've solved the problem, here the screen-shot : Now, with !pip list the package "sympy" is present, and working :

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

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

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

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

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