$ apt --installed list | grep xvfb
xvfb/trusty-updates,trusty-security,now 2:1.15.1-0ubuntu2.7 amd64 [installed]
python --version
Python 2.7.6
$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)
n
答案 0 :(得分:2)
问题是您从未在代码中定义Display
。您的python代码的名称与名为pyvirtualdisplay
的模块名称一致。
您的python代码的文件名称为pyvirtualdisplay.py
,您还尝试从名为pyvirtualdisplay
的模块导入。
正如您在pyvirtualdisplay.py
中看到的那样,在任何地方都没有定义名称为Display
的函数。
Python按顺序使用下面的搜索路径来查找您要导入的模块:
程序的主目录
环境变量PYTHONPATH
标准图书馆指令
任何.pth
个文件的内容
因此,在您的情况下,python尝试在运行pyvirtualdisplay.py
的同一目录中进行搜索,并且能够找到名为pyvirtualdisplay
的文件。因此,python尝试在pyvirtualdisplay.py
(您自己的代码)中搜索显示,因此无法找到任何相关内容。这就是为什么抱怨cannot import name Display
。
我的建议是你可以将你的python代码的名称改为另一个,例如pyvirtualdisplays.py
这将有效。