python 使用 celery 和 billiard 的 virtualenv ImportError

python virtualenv ImportError with celery and billiard

我正在构建一个默认使用 python 2.7.10 的新亚马逊实例。 在我拥有 运行 我的机器配置脚本并且关键时刻到来之后,celery 给了我一个导入,所以我将问题调试到 billard。

包裹似乎在正确的路径中,即

sudo find -name "billiard"
./srv/ia-live/lib64/python2.7/dist-packages/billiard

其中 ia-live 是我的 virtualenv 的路径。通过 python virtualenv executable

检查路径
import sys
sys.path

['',
 '/srv/ia-live/bin',
 '/srv/ia-live/src/django-devserver-redux-master',
 '/usr/lib/python2.7',
 '/srv/ia-live/local/lib64/python2.7/site-packages',
 '/srv/ia-live/local/lib/python2.7/site-packages',
 '/srv/ia-live/lib64/python2.7',
 '/srv/ia-live/lib/python2.7',
 '/srv/ia-live/lib64/python2.7/site-packages',
 '/srv/ia-live/lib/python2.7/site-packages',
 '/srv/ia-live/lib64/python2.7/lib-dynload',
 '/srv/ia-live/local/lib/python2.7/dist-packages',
 '/srv/ia-live/local/lib/python2.7/dist-packages',
 '/srv/ia-live/lib/python2.7/dist-packages',
 '/usr/lib64/python2.7',
 '/usr/lib/python2.7',
 '/srv/ia-live/local/lib/python2.7/dist-packages/IPython/extensions',
 '/home/ec2-user/.ipython']

这似乎是正确的,但当我这样做时

import billiard
ImportError: No module named billiard

我不明白为什么会有问题

我能够找出问题所在。它与 ec2-ami

附带的默认 python27 virtualenv 和 devel 包一起使用

对我来说,我必须更新系统 pip 和系统 virutalenv

使用

sudo -i
pip install --upgrade pip
pip install --upgrade virtualenv

我努力 运行 /usr/bin/virtualenv 创建一个新的 virtualenv。它解决了我的问题。

希望它对其他人也有帮助。