ImportError:没有名为zope.interface的模块,但找到了模块

时间:2015-06-10 03:24:30

标签: python python-2.7 python-module

我是python的新手,我正在尝试使用virtualenv导入模块。

当我导入模块时,我得到:

Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "C:\Program Files (x86)\JetBrains\PyCharm Community Edition   4.0.6\helpers\pydev\pydev_import_hook.py", line 21, in do_import
module = self._system_import(name, *args, **kwargs)
ImportError: No module named zope.interface

我正在尝试使用line:

导入zope.interface模块
import zope.interface

我仔细检查是否通过调用“pip freeze”来安装此模块。我还在virtualEnv site-packages directoy中找到了该模块的位置。 模块的路径是:

virName\Lib\site-packages\zope\interface

在这个目录里面我可以看到__init__.py文件。

据我了解,单独存在__init__.py文件会使其成为一个有效的模块吗?

我通过执行sys.path双重检查了我的模块的搜索路径,它确实包含目录“virName \ Lib \ site-packages \”

所以我的问题是这个。为什么python说它找不到模块?

我还需要检查什么?

我也试过使用以下方法找到模块:

imp.find_module('zope.interface')

但我明白了:

Traceback (most recent call last):
  File "<input>", line 1, in <module>
ImportError: No module named zope.interface

3 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。为了解释一下,如果安装了iPython,PyCharm会使用iPython,而iPython也会使用zope.interface。我在Mac上开发Pyramid项目(使用zope.inerface)并看到这种行为:

系统终端中的Python

$ python
Python 2.7.6 (default, Sep  9 2014, 15:04:36) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import zope.interface
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named interface
>>> 

系统终端中的iPython

$ ipython
Python 2.7.6 (default, Sep  9 2014, 15:04:36) 
Type "copyright", "credits" or "license" for more information.

IPython 3.1.0 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]: import zope.interface

In [2]: 

请注意,它导入没有错误 - 它使用与第一个示例相同的python解释器!

PyCharm中的Python控制台 根据PyCharm文档,这使用iPython,我们看到这是从启动输出尝试:

/System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7 -u /Applications/PyCharm.app/Contents/helpers/pydev/pydevconsole.py 63304 63305
Python 2.7.6 (default, Sep  9 2014, 15:04:36) 
Type "copyright", "credits" or "license" for more information.

IPython 3.1.0 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.
PyDev console: using IPython 3.1.0

import sys; print('Python %s on %s' % (sys.version, sys.platform))
sys.path.extend(['/Users/someone/PycharmProjects/SMS_PUB_API'])

Python 2.7.6 (default, Sep  9 2014, 15:04:36) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
In[2]: import zope.interface
Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/IPython/core/interactiveshell.py", line 3035, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-2-bc61dfc4e3ea>", line 1, in <module>
    import zope.interface
  File "/Applications/PyCharm.app/Contents/helpers/pydev/pydev_import_hook.py", line 21, in do_import
    module = self._system_import(name, *args, **kwargs)
ImportError: No module named interface
In[3]: 

请注意,如果我使用PyCharm的终端功能然后使用系统Python和iPython控制台,我会得到与上面第2个示例相同的结果。

从PyCharm运行金字塔 奇怪的是,如果我使用与上面例子相同的项目解释器从PyCharm(使用zope.interfaces)中运行我的Pyramid项目,它启动就好了

很有可能认为这是一个问题,zope.interface模块的名称中带有一个点 - 这通常是保留python术语来表达路径。但是,其他zope.*模块导入就好了。我进入PyCharm的Project Interpreter设置并注意到我正在使用zope.interface 4.1.1并且4.1.2已经出来了。更新后(在pycharm中),它工作正常 - 我现在可以导入zope.interfaces

请注意,这也发生在普通的Mac终端上。在撰写这篇文章之前,我可以使用iPython导入它。升级iPython后,它在终端上工作(我上面的第二个例子)。

希望这有帮助!

答案 1 :(得分:0)

我遇到了同样的问题,用exe安装时无法导入zope。因为zope文件夹下缺少__init__.py文件。

easy_install zope.interface-3.8.0.win-amd64-py2.7.exe

安装时使用这样的鸡蛋

easy_install zope.interface-3.8.0-py2.7-win-amd64.egg

enter link description here

下载鸡蛋

答案 2 :(得分:0)

尝试

pip install zope.interface
在带有pip.exe的目录中从命令行提示符

C:\anaconda3\Scripts>pip install zope.interface

我遇到了同样的问题,并且按照上述说明安装后得到解决