xvfbwrapper导入错误(使用备用python安装)

2024-09-27 22:35:19 发布

您现在位置:Python中文网/ 问答频道 /正文

xvfbwrapper需要python2.7或更高版本。在

我有一个脚本可以做到这一点:

from xvfbwrapper import Xvfb

我安装了python2.7作为python的替代安装,因为我的操作系统(centos6.4)需要2.6。当我运行脚本时:

^{pr2}$

我得到这个错误:

ImportError: cannot import name Xvfb

这让我很困惑,因为正确版本的python正在执行脚本。似乎导入的模块正在尝试使用系统版本。如果我将python可执行文件从/usr/local/bin/python2.7更改为/usr/local/bin/python,那么如果我确保之前失败的执行中没有字节码编译的模块文件(可能是出于任何原因用python2.6编译的),则可以打开控制台并运行相同的import语句而不会出现错误。在

这似乎是一个路径问题,所以我尝试将/usr/local/bin放在路径的顶部,并将python2.7的名称改为python,但没有使用dice。在

有什么想法吗?我正在努力想办法弄清楚。在

非常感谢。在

更新:

xvfbwrapper安装有:

pip-2.7 install xvfbwrapper

virtualenv也存在同样的问题。*在下面的示例中,一些_脚本.py只是一个import语句:

""" some_script.py """
from xvfbwrapper import Xvfb

我运行了以下命令:

$ virtualenv --no-site-packages --python=/usr/local/bin/python2.7 venv
$ source ./venv/bin/activate
$ pip install xvfbwrapper
$ python -v some_script.py

部分输出:

import xvfbwrapper # directory /home/projects/process/venv/lib/python2.7/site-packages/xvfbwrapper
# /home/projects/process/venv/lib/python2.7/site-packages/xvfbwrapper/__init__.pyc matches        /home/projects/process/venv/lib/python2.7/site-packages/xvfbwrapper/__init__.py
import xvfbwrapper # precompiled from /home/projects/process/venv/lib/python2.7/site-packages/xvfbwrapper/__init__.pyc
Traceback (most recent call last):
File "some_script.py", line 2, in <module>
    from xvfbwrapper import Xvfb
ImportError: cannot import name Xvfb

确切的python版本是2.7.3 xvfbwrapper模块肯定定义了Xvfb类。我在不同的系统上使用相同的模块,没有任何问题,而且是同一个版本。(xvfbwrapper 0.2.3版)

为了给这个奇怪的特性提供更多的上下文:我可以在上面的虚拟环境中运行python控制台并成功地执行相同的命令。在

更新:

python2.7 -c "import sys; print sys.path"

命令输出(*这是系统python,而不是virtualenv):

['',
'/usr/local/lib/python2.7/site-packages/supervisor-3.0-py2.7.egg', 
'/usr/local/lib/python2.7/site-packages/pip-1.4.1-py2.7.egg', 
'/usr/local/lib/python2.7/site-packages/virtualenv-1.10.1-py2.7.egg', 
'/usr/local/lib/python2.7/site-packages/distribute-0.7.3-py2.7.egg', 
'/usr/local/lib/python2.7/site-packages/setuptools-1.1.6-py2.7.egg', 
'/usr/local/lib/python27.zip', 
'/usr/local/lib/python2.7', 
'/usr/local/lib/python2.7/plat-linux2', 
'/usr/local/lib/python2.7/lib-tk', 
'/usr/local/lib/python2.7/lib-old', 
'/usr/local/lib/python2.7/lib-dynload', 
'/usr/local/lib/python2.7/site-packages']

在创建的virtualenv中:

['', 
'/home/projects/process/venv/lib/python27.zip', 
'/home/projects/process/venv/lib/python2.7', 
'/home/projects/process/venv/lib/python2.7/plat-linux2', 
'/home/projects/process/venv/lib/python2.7/lib-tk',     
'/home/projects/process/venv/lib/python2.7/lib-old', 
'/home/projects/process/venv/lib/python2.7/lib-dynload', 
'/usr/local/lib/python2.7', 
'/usr/local/lib/python2.7/plat-linux2', 
'/usr/local/lib/python2.7/lib-tk', 
'/home/projects/process/venv/lib/python2.7/site-packages']

Tags: import版本homebinvirtualenvvenvlibpackages
2条回答

确保在Python2.7下安装了xvfbwrapper;要使其正常工作,需要有类似于easy_install-2.7或{}的可执行文件。如果您只是sudo easy_install xvfbwrapper(或sudo pip install xvfbwrapper),那么只有Python2.6才有这个包可用。在

但是,更好的选择是使用virtualenv(或Conda):

$ virtualenv  python=/usr/local/bin/python2.7 myproject
$ . myproject/bin/activate
$ pip install xvfbwrapper
$ python yourcode.py

另请参见:http://virtualenvwrapper.readthedocs.org/en/latest/

xvfbwrapper版本0.2.3包含导致该问题的错误。在

(抱歉,当我之前检查我系统上的版本时,我一定是意外地从终端检查了同一台计算机。。。我有时会这样…)

我联系了作者,他很大方地修复了这个错误,并将0.2.4版发布到了PyPi中,这应该能正常工作。在

我的另一个系统上运行的版本是xvfbwrapperv0.2.2

相关问题 更多 >

    热门问题