我是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
答案 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
下载鸡蛋
答案 2 :(得分:0)
尝试
pip install zope.interface
在带有pip.exe的目录中从命令行提示符
C:\anaconda3\Scripts>pip install zope.interface
我遇到了同样的问题,并且按照上述说明安装后得到解决