Python 尝试将我的应用程序推送到heroku时会出现以下错误FileNotFoundError:[Errno 2]没有这样的文件或目录:'/app/gettingstarted/media';

Python 尝试将我的应用程序推送到heroku时会出现以下错误FileNotFoundError:[Errno 2]没有这样的文件或目录:'/app/gettingstarted/media';,python,django,git,heroku,Python,Django,Git,Heroku,在尝试推送我的应用程序时,我遇到以下错误 FileNotFoundError: [Errno 2] No such file or directory: '/app/gettingstarted/media' 但它确实存在,这让我很困惑。导致它的文件结构是这样的 src/gettingstarted/media 媒体是一个空目录。我的推子昨晚才起作用。这是我运行git push heroku master的结果 Counting objects: 13, done. Delta com

在尝试推送我的应用程序时,我遇到以下错误

FileNotFoundError: [Errno 2] No such file or directory: '/app/gettingstarted/media'
但它确实存在,这让我很困惑。导致它的文件结构是这样的

src/gettingstarted/media

媒体是一个空目录。我的推子昨晚才起作用。这是我运行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'
并得到以下输出

        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'
我的gettingstarted/url.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才能“查看”它们,因此,尽管您的
媒体
目录在本地存在,但它在Heroku上不存在。一种常见的处理方法是创建一个名为
的空文件。将
保存在目录中。

就是这样。我添加了.keep文件。然后我把它取了下来,以确保它不是偶然的,它不起作用。我把它加了回去,它就工作了。谢谢
    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'
        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)