python - django 下的六个问题?

标签 python django

我正在尝试使用一个名为 vcrpy 的包来加速我的 Django 应用程序测试套件的执行。我在 Mac 上使用 django 1.7,使用 Python 2.7。

我在其中一个测试中添加了以下几行:

import vcr
with vcr.use_cassette('recording.yaml'):

结果是导入错误:

    import vcr
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/vcr/__init__.py", line 2, in <module>
    from .config import VCR
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/vcr/config.py", line 6, in <module>
    from .cassette import Cassette
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/vcr/cassette.py", line 12, in <module>
    from .patch import CassettePatcherBuilder
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/vcr/patch.py", line 8, in <module>
    from .stubs import VCRHTTPConnection, VCRHTTPSConnection
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/vcr/stubs/__init__.py", line 9, in <module>
    from six.moves.http_client import (
ImportError: No module named http_client

VCR 包本身有问题的代码是:

import six
from six.moves.http_client import (
    HTTPConnection,
    HTTPSConnection,
    HTTPMessage,
    HTTPResponse,
)

有趣的是:当我只是从一个普通的 python 控制台运行这段代码时,它似乎运行良好,但它会导致在 Django 下或在 django manage.py shell 下出现上述 ImportError。

知道哪里出了问题吗?

(关于六个模块位置的一些额外细节:

当我运行纯 python 控制台时,我得到以下信息:

Python 2.7.8 (v2.7.8:ee879c0ffa11, Jun 29 2014, 21:07:35) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 
>>> import six
>>> print six.__file__
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/six.pyc

做同样的事情,用 import django;来自 manage.py shell 的 django.setup() 产生完全相同的目录和相同的 six.pyc 文件。

)

最佳答案

对于最初的问题来说可能有点太晚了,但我是通过谷歌来到这里的,所以为了将来引用,这是我的解决方案:

问题

我发现的问题是 mac os 不仅预装了 python,还预装了一些包。六是这些包裹之一,其中存在冲突。预安装的 6 个优先于 pip 安装的 6 个,但 pip 仍然根据它自己安装的内容提供信息(例如 6 个 1.9.0 与 1.4.1)。

预装(版本 1.4.1):

/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/

pip 安装(不管你安装了什么,对我来说是 1.9.0):

/Library/Python/2.7/site-packages/

您可以通过运行来检查您是否属于这种情况:

$ python
>>> import six
>>> print six.__file__
'/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six.py'

修复它

解决方法其实很简单,放上去

export PYTHONPATH="/Library/Python/2.7/site-packages:$PYTHONPATH"

在您的~/.bashrc(或您的shell 使用的任何文件)中。如果您已将 pip 配置为安装在其他地方,请将其放在 pythonpath 中。

关于python - django 下的六个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27656510/

相关文章:

python - 两个 imshow 图相互叠加,使用 slider 更改图层的不透明度

python - 替换数据框中的重复值

python - 如何从字符串中删除特定字符

django - Apache 抛出错误 500 : Internal Server Error when GET from localhost/internal network

sql - 在 Postgres 中手动对列进行排序的正确方法是什么?

python - numpy.polyfit 的错误是什么?

python - Pandas 中的 bool 值和缺失值

python - 使用 Django auth 用户模型作为外键和反向关系

JPEG 的 Django ImageField 问题

django - 如何向 Django Celery Flower Monitoring 添加身份验证和端点?