尝试将我的应用程序推送到heroku时,出现此错误FileNotFoundError:[Errno 2]没有此类文件或目录:'/ app / gettingstarted / media' [英] Trying to push my app to heroku gives me this error FileNotFoundError: [Errno 2] No such file or directory: '/app/gettingstarted/media'
问题描述
在尝试推送我的应用程序时,出现以下错误
While trying to push my app I get the follwing error
FileNotFoundError: [Errno 2] No such file or directory: '/app/gettingstarted/media'
但是确实存在,这使我感到困惑。
But it does exist which confuses me.My file structure that leads to it is this
src / gettingstarted / media
src/gettingstarted/media
媒体是空目录。昨晚我的努力一直在起作用。这是我运行git push heroku master的结果。
Media is an empty directory. My pushes were working just last night. Heres the result of me running git push heroku master
Counting objects: 13, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (12/12), done.
Writing objects: 100% (13/13), 670.50 KiB | 0 bytes/s, done.
Total 13 (delta 9), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Using set buildpack heroku/python
remote: -----> Python app detected
remote: $ pip install -r requirements.txt
remote:
remote: $ python manage.py collectstatic --noinput
remote: Traceback (most recent call last):
remote: File "manage.py", line 10, in <module>
remote: execute_from_command_line(sys.argv)
remote: File "/app/.heroku/python/lib/python3.5/site-packages/django/core/management/__init__.py", line 353, in execute_from_command_line
remote: utility.execute()
remote: File "/app/.heroku/python/lib/python3.5/site-packages/django/core/management/__init__.py", line 345, in execute
remote: self.fetch_command(subcommand).run_from_argv(self.argv)
remote: File "/app/.heroku/python/lib/python3.5/site-packages/django/core/management/base.py", line 348, in run_from_argv
remote: self.execute(*args, **cmd_options)
remote: File "/app/.heroku/python/lib/python3.5/site-packages/django/core/management/base.py", line 399, in execute
remote: output = self.handle(*args, **options)
remote: File "/app/.heroku/python/lib/python3.5/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 176, in handle
remote: collected = self.collect()
remote: File "/app/.heroku/python/lib/python3.5/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 98, in collect
remote: for path, storage in finder.list(self.ignore_patterns):
remote: File "/app/.heroku/python/lib/python3.5/site-packages/django/contrib/staticfiles/finders.py", line 112, in list
remote: for path in utils.get_files(storage, ignore_patterns):
remote: File "/app/.heroku/python/lib/python3.5/site-packages/django/contrib/staticfiles/utils.py", line 28, in get_files
remote: directories, files = storage.listdir(location)
remote: File "/app/.heroku/python/lib/python3.5/site-packages/django/core/files/storage.py", line 299, in listdir
remote: for entry in os.listdir(path):
remote: FileNotFoundError: [Errno 2] No such file or directory: '/app/gettingstarted/media'
remote:
remote: ! Error while running '$ python manage.py collectstatic --noinput'.
remote: See traceback above for details.
remote:
remote: You may need to update application code to resolve this error.
remote: Or, you can disable collectstatic for this application:
remote:
remote: $ heroku config:set DISABLE_COLLECTSTATIC=1
remote:
remote: https://devcenter.heroku.com/articles/django-assets
remote:
remote: ! Push rejected, failed to compile Python app
remote:
remote: Verifying deploy...
remote:
remote: ! Push rejected to hispanicheights.
remote:
To https://git.heroku.com/hispanicheights.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/hispanicheights.git'
在这里阅读一篇文章后,我运行了
after reading a post on here I ran this
heroku config:set DEBUG_COLLECTSTATIC=1
并得到以下输出
Setting config vars and restarting hispanicheights... done
DEBUG_COLLECTSTATIC: 1
(practice) apples-MacBook-Pro:src ray$ git push heroku master
Counting objects: 13, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (12/12), done.
Writing objects: 100% (13/13), 670.50 KiB | 0 bytes/s, done.
Total 13 (delta 9), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Using set buildpack heroku/python
remote: -----> Python app detected
remote: $ pip install -r requirements.txt
remote:
remote: $ python manage.py collectstatic --noinput
remote: Traceback (most recent call last):
remote: File "manage.py", line 10, in <module>
remote: execute_from_command_line(sys.argv)
remote: File "/app/.heroku/python/lib/python3.5/site-packages/django/core/management/__init__.py", line 353, in execute_from_command_line
remote: utility.execute()
remote: File "/app/.heroku/python/lib/python3.5/site-packages/django/core/management/__init__.py", line 345, in execute
remote: self.fetch_command(subcommand).run_from_argv(self.argv)
remote: File "/app/.heroku/python/lib/python3.5/site-packages/django/core/management/base.py", line 348, in run_from_argv
remote: self.execute(*args, **cmd_options)
remote: File "/app/.heroku/python/lib/python3.5/site-packages/django/core/management/base.py", line 399, in execute
remote: output = self.handle(*args, **options)
remote: File "/app/.heroku/python/lib/python3.5/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 176, in handle
remote: collected = self.collect()
remote: File "/app/.heroku/python/lib/python3.5/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 98, in collect
remote: for path, storage in finder.list(self.ignore_patterns):
remote: File "/app/.heroku/python/lib/python3.5/site-packages/django/contrib/staticfiles/finders.py", line 112, in list
remote: for path in utils.get_files(storage, ignore_patterns):
remote: File "/app/.heroku/python/lib/python3.5/site-packages/django/contrib/staticfiles/utils.py", line 28, in get_files
remote: directories, files = storage.listdir(location)
remote: File "/app/.heroku/python/lib/python3.5/site-packages/django/core/files/storage.py", line 299, in listdir
remote: for entry in os.listdir(path):
remote: FileNotFoundError: [Errno 2] No such file or directory: '/app/gettingstarted/media'
remote:
remote: ! Error while running '$ python manage.py collectstatic --noinput'.
remote: See traceback above for details.
remote:
remote: You may need to update application code to resolve this error.
remote: Or, you can disable collectstatic for this application:
remote:
remote: $ heroku config:set DISABLE_COLLECTSTATIC=1
remote:
remote: https://devcenter.heroku.com/articles/django-assets
remote:
remote: ****** Collectstatic environment variables:
remote:
remote: CPLUS_INCLUDE_PATH=/app/.heroku/vendor/include:/app/.heroku/vendor/include:/app/.heroku/python/include:
remote: SOURCE_VERSION=68adc8ed3bbefc420568ec683846e0c2c2a51908
remote: PROFILE_PATH=/app/.profile.d/python.sh
remote: DEBUG_COLLECTSTATIC=1
remote: LIBRARY_PATH=/app/.heroku/vendor/lib:/app/.heroku/vendor/lib:/app/.heroku/python/lib:
remote: CACHE_DIR=/app/tmp/cache
remote: PYTHONUNBUFFERED=1
remote: PYHONHOME=/app/.heroku/python
remote: LD_LIBRARY_PATH=/app/.heroku/vendor/lib:/app/.heroku/vendor/lib:/app/.heroku/python/lib:
remote: BIN_DIR=/app/tmp/buildpacks/python/bin
remote: PATH=/app/.heroku/python/bin:/app/.heroku/vendor/bin::/usr/local/bin:/app/bin:/app/vendor/bundle/bin:/app/vendor/bundle/ruby/2.3.0/bin:/usr/local/bin:/usr/bin:/bin:/tmp/codon/vendor/bin:/app/tmp/buildpacks/python/vendor/bpwatch:/app/tmp/buildpacks/python/vendor/pip-pop
remote: RECOMMENDED_PYTHON_VERSION=python-2.7.11
remote: C_INCLUDE_PATH=/app/.heroku/vendor/include:/app/.heroku/vendor/include:/app/.heroku/python/include:
remote: PWD=/app
remote: LOG_FILE=/tmp/fifo20160406-3-8wj7yc
remote: LANG=en_US.UTF-8
remote: STACK=cedar-14
remote: TIMES=2
remote: SHLVL=3
remote: REQUEST_ID=327705f8-1028-4375-912a-f6abb15a9cb4
remote: HOME=/app
remote: BPWATCH_STORE_PATH=/app/tmp/cache/bpwatch.json
remote: PYTHONPATH=/app/
remote: BUILD_DIR=/app
remote: WARNINGS_LOG=/tmp/tmp.EFU8JTKPZD
remote: USER_LOG_FILE=/tmp/fifo20160406-3-12ib9mh
remote: PKG_CONFIG_PATH=/app/.heroku/vendor/lib/pkgconfig:/app/.heroku/vendor/lib/pkgconfig:/app/.heroku/vendor/lib/pkg-config:/app/.heroku/vendor/lib/pkg-config:/app/.heroku/python/lib/pkg-config:
remote: DATABASE_URL=postgres://vzeteghnhlwrjq:OABELzntZhcJwAIaqTlsI-mwWl@ec2-54-235-93-178.compute-1.amazonaws.com:5432/d230us01stas97
remote: _=/usr/bin/env
remote:
remote: ! Push rejected, failed to compile Python app
remote:
remote: Verifying deploy...
remote:
remote: ! Push rejected to hispanicheights.
remote:
To https://git.heroku.com/hispanicheights.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/hispanicheights.git'
我不确定4个月后会发生什么,所以我不确定。
not really sure what's going on as I'm about 4 months in to django. Any help or guidance would be appreciated
不确定白噪声是否是造成这种情况的原因。我对此表示怀疑。但是这里是我的settings.py文件
not sure if whitenoise is causing this. I doubt it. But heres my settings.py file
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware',
)
ROOT_URLCONF = 'gettingstarted.urls'
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'staticfiles')
STATIC_URL = '/static/'
MEDIA_ROOT = os.path.join(PROJECT_ROOT, 'media_cdn')
MEDIA_URL = '/media/'
# Extra places for collectstatic to find static files.
STATICFILES_DIRS = (
os.path.join(PROJECT_ROOT, 'static'),
os.path.join(PROJECT_ROOT, 'media'),
)
# Simplified static file serving.
# https://warehouse.python.org/project/whitenoise/
STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'
我的入门指南/urls.py
my gettingstarted/urls.py
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^blog/', include('hello.urls', namespace='blog', app_name='blog')),
url(r'^db', hello.views.db, name='db'),
url(r'^', include('hello.urls')), # hello corresponds to the hello module in installed apps
]
if settings.DEBUG:
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
推荐答案
我认为这里的问题是git不会跟踪空目录,它们需要至少包含一个文件,以便git查看它们,因此尽管您的 media
目录在本地存在,在Heroku中不存在。一种常见的处理方法是在目录中创建一个名为 .keep
的空文件。
I think the issue here is that git doesn't track empty directories, they need to contain at least one file for git to "see" them, so although your media
directory exists locally it doesn't exist on Heroku. A common way of handling this is to create an empty file called .keep
in the directory.
这篇关于尝试将我的应用程序推送到heroku时,出现此错误FileNotFoundError:[Errno 2]没有此类文件或目录:'/ app / gettingstarted / media'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!