python - 替代 python 安装时出现 xvfbwrapper 导入错误

标签 python python-2.7 importerror xvfb

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

我有一个脚本可以执行此操作:

from xvfbwrapper import Xvfb

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

python2.7 some_script.py

我收到此错误:

ImportError: cannot import name Xvfb

这让我感到困惑,因为正确的 python 版本正在执行脚本。看来导入的模块正在尝试使用系统版本。如果我将 python 可执行文件从/usr/local/bin/python2.7 更改为/usr/local/bin/python,如果我确保没有字节,我可以打开控制台并运行相同的导入语句,而不会出现错误代码从先前失败的执行中编译了模块的文件,可能由于某种原因使用 python2.6 编译。

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

对正在发生的事情有什么想法吗?我正在绞尽脑汁地想弄清楚这个问题。

非常感谢。

更新:

xvfbwrapper 安装时使用:

pip-2.7 install xvfbwrapper

virtualenv 也存在同样的问题。 *在以下示例中,some_script.py 只是一个导入语句:

""" 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']

最佳答案

确保您在 Python 2.7 下安装了 xvfbwrapper;为此,需要有诸如 easy_install-2.7pip-2.7 可执行文件之类的东西。如果您刚刚执行了 sudo easy_install xvfbwrapper(或 sudo pip install xvfbwrapper),则只有 Python 2.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/

关于python - 替代 python 安装时出现 xvfbwrapper 导入错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19195831/

相关文章:

python - 将 float 转换为美元和美分

python - 如何用另一个分类变量列表替换不同的分类变量

python-2.7 - 使用 Python 的 Opencv 3 中的 LineSegmentDetector

python - Django 导入错误

python - Python中嵌套模块的调用

python - 用于计算设定范围内指数极限的脚本

python - 如何使用数组值列表检查数组?

python-2.7 - 只有 Ciper 没有 importing , importerror 但对于其他模块如 Random in Crypto 则没有

SAS proc 导入错误 : "Didn' t see end for |varnames| element. 得到 -> ||"

python - 提取系列对象之间的字符串