pyvirtualdisplay ImportError: cannot import name Display
pyvirtualdisplay ImportError: cannot import name Display
我的Ubuntu
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.4 LTS
Release: 14.04
Codename: trusty
我的Xvfb
$ apt --installed list | grep xvfb
xvfb/trusty-updates,trusty-security,now 2:1.15.1-0ubuntu2.7 amd64 [installed]
我的python
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
PyVirtualDisplay
$ pip --version
pip 1.5.4 from /usr/lib/python2.7/dist-packages (python 2.7)
$ pip list | grep PyVirtual
PyVirtualDisplay (0.2)
问题是您从未在代码中定义 Display
。您的 python 代码的名称与名为 pyvirtualdisplay
.
的模块名称一致
您的 python 代码的文件名为 pyvirtualdisplay.py
,您还尝试从名为 pyvirtualdisplay
.
的模块导入
正如您从 pyvirtualdisplay.py
中看到的那样,没有在任何地方定义名称为 Display
的函数。
Python 按顺序使用以下搜索路径查找您要导入的模块:
程序的主目录
环境变量中的目录PYTHONPATH
标准图书馆目录
任何 .pth
个文件的内容
因此,在您的情况下,python 正在尝试在与您 运行 您的 pyvirtualdisplay.py
相同的目录中搜索,并且它能够找到名称为 [=11 的文件=].因此,python 尝试在 pyvirtualdisplay.py
(您自己的代码)中搜索 Display,因此无法找到任何相关内容。这就是它抱怨的原因 cannot import name Display
.
我的建议是您可以将 python 代码的名称更改为其他名称,例如pyvirtualdisplays.py
这样就可以了。
我的Ubuntu
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.4 LTS
Release: 14.04
Codename: trusty
我的Xvfb
$ apt --installed list | grep xvfb
xvfb/trusty-updates,trusty-security,now 2:1.15.1-0ubuntu2.7 amd64 [installed]
我的python
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
PyVirtualDisplay
$ pip --version
pip 1.5.4 from /usr/lib/python2.7/dist-packages (python 2.7)
$ pip list | grep PyVirtual
PyVirtualDisplay (0.2)
问题是您从未在代码中定义 Display
。您的 python 代码的名称与名为 pyvirtualdisplay
.
您的 python 代码的文件名为 pyvirtualdisplay.py
,您还尝试从名为 pyvirtualdisplay
.
正如您从 pyvirtualdisplay.py
中看到的那样,没有在任何地方定义名称为 Display
的函数。
Python 按顺序使用以下搜索路径查找您要导入的模块:
程序的主目录
环境变量中的目录
PYTHONPATH
标准图书馆目录
任何
.pth
个文件的内容
因此,在您的情况下,python 正在尝试在与您 运行 您的 pyvirtualdisplay.py
相同的目录中搜索,并且它能够找到名称为 [=11 的文件=].因此,python 尝试在 pyvirtualdisplay.py
(您自己的代码)中搜索 Display,因此无法找到任何相关内容。这就是它抱怨的原因 cannot import name Display
.
我的建议是您可以将 python 代码的名称更改为其他名称,例如pyvirtualdisplays.py
这样就可以了。