0

我想在我的 openshift django 实例中使用 collectstatic 选项,但它似乎正在复制大量不需要的文件。

输出示例行

Pretending to copy '/var/lib/openshift/519017e25973ca1ead00035b/app-root/runtime/dependencies/python/virtenv/lib64/python2.7/site-packages/Django-1.5.2-py2.7.egg/django/contrib/contenttypes/locale/da/LC_MESSAGES/django.po'

以下是 settings.py 中的一些片段

if 'OPENSHIFT_HOMEDIR' in os.environ:
    # Python dotted path to the WSGI application used by Django's runserver.
    WSGI_APPLICATION = 'wsgi.application'
    DEBUG = False
    DB_ROOT = os.environ['OPENSHIFT_DATA_DIR']
    STATICFILE_DIR = os.path.join(os.environ['OPENSHIFT_REPO_DIR'], 'wsgi', 'static', 'mysite')
    TEMPLATE_DIR = os.path.join(os.environ['OPENSHIFT_REPO_DIR'], 'wsgi', 'templates')
    STATIC_ROOT = os.path.join(os.environ['OPENSHIFT_REPO_DIR'], 'wsgi', 'static')
STATICFILES_DIRS = (STATICFILE_DIR,)

"ls -R $OPENSHIFT_REPO_DIR/ | grep virtualenv" 没有结果

ls -R $OPENSHIFT_REPO_DIR../.. | grep virtenv 确实显示了一堆旧的 virtenv

此外,这似乎很奇怪: > ls -la $OPENSHIFT_HOMEDIR

drwxr-xr-x.  11 xxxx                     xxxx    4096 Jan 26 11:45 python
lrwxrwxrwx.   1 root                     root      50 Jun  7  2013 python-2.7 -> /var/lib/openshift/519017e25973ca1ead00035b/python
4

3 回答 3

0

对于可能遇到相同问题的其他人。

这是由于 openshift 上的 settings.py 版本与我的本地副本不同步造成的。我错误地设置了 STATICFILE_DIR 并在某个时候将其签入。

于 2015-01-27T03:12:08.243 回答
0

看起来 virtualenv 以某种方式被包含在STATICFILE_DIRS设置中(可能通过符号链接)。如果你这样做ls -RSTATIC_ROOT你会看到任何应该存在的东西吗?

于 2015-01-26T07:03:41.020 回答
0

在 Django 中,STATIC_ROOT 是运行时静态文件复制到的位置collectstatic。STATICFILES_DIRS 是 collectstatic 查找要收集的静态文件的位置。在您的情况下,您将 STATIC_ROOT 设置为$OPENSHIFT_REPO_DIR/wsgi/staticSTATICFILES_DIRS 设置为 STATICFILE_DIR 设置为$OPENSHHIFT_REPO_DIR/wsgi/static.

因此,您要从中复制文件wsgi/static并将它们放入wsgi/static. 这似乎可能导致一种循环情况,它会一遍又一遍地复制相同的文件。

确保 STATIC_ROOT 不包含在 STATICFILES_DIRS 中。

于 2015-11-12T05:29:46.977 回答