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