【发布时间】:2015-06-22 14:57:44
【问题描述】:
我正在开发 Amazon Linux AMI(版本 2013.09)。 除其他外,我的目标是让 Django 启动并运行。 所以这就是我要做的:
- 使用 yum 安装 pip(它在 Python2.7/dist-packages 中安装 pip 7.0.3)
- 使用 pip 安装 virtualenv
- 创建一个 virtualenv(使用 --no-site-packages)
- 在 virtualenv 中使用 pip 安装 Django(这会将 Django 安装在 virtenv 的 Python 目录中,在 dist-packages 中)
这看起来不错,直到我尝试使用 manage.py。以下行:
python manage.py collectstatic --noinput -c -l > /dev/null
调用以下错误:
OSError: [Errno 2] No such file or directory: '...my-env/lib/python2.7/site-packages/django/contrib/admin/static'
这是真的,因为整个 Django 基础设施都在 dist-packages 中,而不是 site-packages 中。 修复这种依赖的正确方法是什么?
谢谢!
更新 28.06.15 Django 尝试访问站点包的原因是其 settings.py 文件中的“STATIC_ROOT”定义。 问题是,几年前我以完全相同的方式安装了 Django,使用相同的设置,并且运行良好。 那么有什么变化呢?为什么 pip 突然转移到了 dist-packages?
【问题讨论】:
-
为什么 Django 应该在 dist-packages 中?根据定义,这是由发行版的包管理器安装的东西。
pip安装的任何东西都在 site-packages 中。 -
我知道,这就是为什么我对此感到困惑。
-
我遇到了this question,这可以解释为什么 pip 将包安装到 dist-packages 中。