我想在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
答案 0 :(得分:0)
看起来virtualenv在STATICFILE_DIRS
设置中以某种方式被包含(可能通过符号链接)。如果您在ls -R
上STATIC_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。