Collectstatic正在我的openshift实例上复制太多文件

时间:2015-01-26 06:47:12

标签: django openshift collectstatic

我想在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确实显示了一堆旧的virtenvs

另外,这看起来很奇怪: > 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

3 个答案:

答案 0 :(得分:0)

看起来virtualenv在STATICFILE_DIRS设置中以某种方式被包含(可能通过符号链接)。如果您在ls -RSTATIC_ROOT,您是否看到了应该存在的任何内容?

答案 1 :(得分:0)

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

这是因为openshift上的settings.py版本与我的本地副本不同步。我错误地设置了STATICFILE_DIR并在某个时候检查了它。

答案 2 :(得分:0)

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

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

确保STATICFILES_DIRS中不包含STATIC_ROOT。