pyvirtualdisplay ImportError:无法导入名称显示

时间:2016-04-14 16:49:01

标签: python-2.7 pip ubuntu-14.04 xvfb

我的Ubuntu

$ apt --installed list | grep xvfb
xvfb/trusty-updates,trusty-security,now 2:1.15.1-0ubuntu2.7 amd64 [installed]

我的Xvfb

python --version
Python 2.7.6

我的python

$more pyvirtualdisplay.py

#!/usr/bin/env python

from pyvirtualdisplay import Display
from selenium import webdriver

display = Display(visible=0, size=(800, 600))
display.start()

# now Firefox will run in a virtual display. 
# you will not see the browser.
browser = webdriver.Firefox()
browser.get('http://www.google.com')
print browser.title
browser.quit()

display.stop()

我的档案

$ python pyvirtualdisplay.py

Traceback (most recent call last):
  File "pyvirtualdisplay.py", line 3, in <module>
    from pyvirtualdisplay import Display
  File "/root/pyvirtualdisplay.py", line 3, in <module>
    from pyvirtualdisplay import Display
ImportError: cannot import name Display

当我运行它

$ pip --version
pip 1.5.4 from /usr/lib/python2.7/dist-packages (python 2.7)

$ pip list | grep PyVirtual
PyVirtualDisplay (0.2)

PyVirtualDisplay

n

1 个答案:

答案 0 :(得分:2)

问题是您从未在代码中定义Display。您的python代码的名称与名为pyvirtualdisplay的模块名称一致。

您的python代码的文件名称为pyvirtualdisplay.py,您还尝试从名为pyvirtualdisplay的模块导入。

正如您在pyvirtualdisplay.py中看到的那样,在任何地方都没有定义名称为Display的函数。

Python按顺序使用下面的搜索路径来查找您要导入的模块:

  1. 程序的主目录

  2. 环境变量PYTHONPATH

  3. 中的定向
  4. 标准图书馆指令

  5. 任何.pth个文件的内容

  6. 因此,在您的情况下,python尝试在运行pyvirtualdisplay.py的同一目录中进行搜索,并且能够找到名为pyvirtualdisplay的文件。因此,python尝试在pyvirtualdisplay.py(您自己的代码)中搜索显示,因此无法找到任何相关内容。这就是为什么抱怨cannot import name Display

    我的建议是你可以将你的python代码的名称改为另一个,例如pyvirtualdisplays.py这将有效。