Implantar ativos estáticos no heroku da máquina local - não é possível abrir o arquivo 'manage.py': [Erro 2] Esse arquivo ou diretório não existe

Estou tentando implantar meus arquivos de ativos no heroku e recebo essa saída na minha interface de linha de comando:

(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ heroku run python manage.py collectstatic
Running python manage.py collectstatic on neurorehabilitation.... up, run.5168
python: can't open file 'manage.py': [Errno 2] No such file or directory
(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ 

É estranho para mim, porque eu estou atualmente no diretório / pasta em que omanage.py arquivo está localizado

Para obter uma implantação antecipada de um aplicativo, escolhi desativar a variável de ambienteDISABLE_COLLECT_STATIC desta maneira:

(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ heroku config:set DISABLE_COLLECTSTATIC=1
Setting config vars and restarting neurorehabilitation... done
DISABLE_COLLECTSTATIC: 1
(nrb_dev) ➜  neurorehabilitation_projects git:(master)

De acordo com o acima, quando eu executogit push heroku master Posso implantar o aplicativo mi:

remote: 
remote: 
remote: -----> Discovering process types
remote:        Procfile declares types -> web
remote: 
remote: -----> Compressing...
remote:        Done: 46M
remote: -----> Launching...
remote:        Released v15
remote:        https://neurorehabilitation.herokuapp.com/ deployed to Heroku
remote: 
remote: Verifying deploy... done.
To https://git.heroku.com/neurorehabilitation.git
 * [new branch]      master -> master
(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗

De acordo com as ações anteriores, no meu link principalhttps://neurorehabilitation.herokuapp.com/ Ocorreu um erro, acho que é porque os arquivos estáticos não foram enviados e foram desativados.

Isto está certo? Eu não sei ...

Mas, algo que parece estranho é que no meu Django Adminhttps://neurorehabilitation.herokuapp.com/admin/ Posso detalhar o modelo e os estilos css e js no admin; então, não sei se o heroku está trabalhando com arquivos estáticos ou não.

O que aconteceu aqui nessa situação com meus arquivos estáticos?

No entanto, sigo o meu processo e, nesta oportunidade, posso implantar remotamente em ações heroku relacionadas aomanage.py comandos.

Eu verifiquei isso porque posso executar minhas migrações do meu aplicativo:

(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ heroku run python  manage.py migrate        
Running python manage.py migrate on neurorehabilitation.... up, run.7836
Operations to perform:
  Apply all migrations: contenttypes, auth, userprofiles, sessions, medical_encounter_information, admin
Running migrations:
  Rendering model states... DONE
  Applying contenttypes.0001_initial... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0001_initial... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying userprofiles.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying userprofiles.0002_auto_20160225_2130... OK
  Applying userprofiles.0003_auto_20160225_2130... OK
  Applying medical_encounter_information.0001_initial... OK
  Applying medical_encounter_information.0002_auto_20160225_2130... OK
  Applying medical_encounter_information.0003_auto_20160225_2130... OK
  Applying medical_encounter_information.0004_auto_20160225_2211... OK
  Applying medical_encounter_information.0005_auto_20160225_2211... OK
  Applying medical_encounter_information.0006_auto_20160225_2303... OK
  Applying medical_encounter_information.0007_auto_20160229_2204... OK
  Applying medical_encounter_information.0008_auto_20160229_2208... OK
  Applying medical_encounter_information.0009_auto_20160301_0130... OK
  Applying medical_encounter_information.0010_auto_20160301_0312... OK
  Applying medical_encounter_information.0011_auto_20160301_1525... OK
  Applying medical_encounter_information.0012_auto_20160301_1601... OK
  Applying medical_encounter_information.0013_auto_20160301_1606... OK
  Applying medical_encounter_information.0014_auto_20160301_1629... OK
  Applying medical_encounter_information.0015_auto_20160301_1633... OK
  Applying medical_encounter_information.0016_auto_20160301_1636... OK
  Applying sessions.0001_initial... OK
  Applying userprofiles.0004_auto_20160225_2211... OK
  Applying userprofiles.0005_auto_20160225_2211... OK
  Applying userprofiles.0006_auto_20160225_2303... OK
  Applying userprofiles.0007_auto_20160229_2204... OK
  Applying userprofiles.0008_auto_20160229_2208... OK
  Applying userprofiles.0009_auto_20160301_0130... OK
  Applying userprofiles.0010_auto_20160301_0312... OK
  Applying userprofiles.0011_auto_20160301_1525... OK
  Applying userprofiles.0012_auto_20160301_1601... OK
  Applying userprofiles.0013_auto_20160301_1606... OK
  Applying userprofiles.0014_auto_20160301_1629... OK
  Applying userprofiles.0015_auto_20160301_1633... OK
  Applying userprofiles.0016_auto_20160301_1636... OK
(nrb_dev) ➜  neurorehabilitation_projects git:(master)

Além disso, posso criar dentro do meu aplicativo implantado um superusuário da minha aposta local ...

(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ heroku run python  manage.py createsuperuser
Running python manage.py createsuperuser on neurorehabilitation.... up, run.5381

Username: bgarcial
Email address: [email protected]
Password: 
Password (again): 
Superuser created successfully.
(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ 

Depois, desabilitei a configuração da variável de ambiente anteriormenteDISABLE_COLLECTSTATIC=1 (Excluí a variável de ambiente do aplicativo heroku do painel de configurações)

Mas, quando executo novamente oheroku run python manage.py collectstatic comando, recebo esta notificação:

(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ heroku run python  manage.py collectstatic
Running python manage.py collectstatic on neurorehabilitation.... up, run.9342

You have requested to collect static files at the destination
location as specified in your settings.

This will overwrite existing files!
Are you sure you want to do this?

Type 'yes' to continue, or 'no' to cancel: yes
Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/app/.heroku/python/lib/python3.4/site-packages/django/core/management/__init__.py", line 353, in execute_from_command_line
    utility.execute()
  File "/app/.heroku/python/lib/python3.4/site-packages/django/core/management/__init__.py", line 345, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/app/.heroku/python/lib/python3.4/site-packages/django/core/management/base.py", line 348, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/app/.heroku/python/lib/python3.4/site-packages/django/core/management/base.py", line 399, in execute
    output = self.handle(*args, **options)
  File "/app/.heroku/python/lib/python3.4/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 176, in handle
    collected = self.collect()
  File "/app/.heroku/python/lib/python3.4/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 98, in collect
    for path, storage in finder.list(self.ignore_patterns):
  File "/app/.heroku/python/lib/python3.4/site-packages/django/contrib/staticfiles/finders.py", line 112, in list
    for path in utils.get_files(storage, ignore_patterns):
  File "/app/.heroku/python/lib/python3.4/site-packages/django/contrib/staticfiles/utils.py", line 28, in get_files
    directories, files = storage.listdir(location)
  File "/app/.heroku/python/lib/python3.4/site-packages/django/core/files/storage.py", line 299, in listdir
    for entry in os.listdir(path):
FileNotFoundError: [Errno 2] No such file or directory: '/app/neurorehabilitation/settings/static'
(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗

Verificando esse inconveniente, acho que meu erro está aqui no final:

directories, files = storage.listdir(location)
      File "/app/.heroku/python/lib/python3.4/site-packages/django/core/files/storage.py", line 299, in listdir
        for entry in os.listdir(path):
    FileNotFoundError: [Errno 2] No such file or directory: '/app/neurorehabilitation/settings/static'

E, isso me diz que no meu aplicativo heroku implantado não existe ostatic diretório

Eu executeiheroku run bash para verificar o diretório da estrutura dentro do meu aplicativo heroku e posso detalhar o projeto raiz chamado/app em heroku

(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ heroku run bash    
    Running bash on neurorehabilitation.... up, run.5840
    ~ $ pwd 
    /app
    ~ $ 

Eu listei o/app conteúdo e vejo todos os meus diretórios e arquivos de uma maneira semelhante à do meu projeto de ambiente local de desenvolvimento django

~ $ ls
avatars  custom_storages.py  django-multiselectfield-0.1.3.tar.gz  functional_tests  manage.py  medical_encounter_information  neurorehabilitation  Procfile  requirements  requirements.txt  runtime.txt  userprofiles

Com o meu erro está relacionado com este assunto:

FileNotFoundError: [Erro 2] Nenhum arquivo ou diretório: '/ app / neurorehabilitation / settings / static'

Então eu entro nesse diretório/app/neurorehabilitation/settings/ mas posso ver que não existe um diretório chamadostatic por dentro, é assim que o heroku tenta pesquisar:

~ $ cd /app/neurorehabilitation/settings/
~/neurorehabilitation/settings $ ls
base.py  development.py  __init__.py  production.py  staging.py  testing.py
~/neurorehabilitation/settings $

E isso ocorre porque, de acordo com o diretório de estrutura que eu configuro quando crio meu projeto django no meu ambiente de desenvolvimento local. Eu defino o seguinte:

Então, de acordo com a situação anterior ...

Por que o git quando executo a implantação no heroku, o processo está procurando um caminho paraneurorehabilitation/settings/static quando isso não é configurado a partir da fonte do projeto original, isso significa, meu projeto na minha máquina antes de implantar no heroku?

Que ação eu poderia tomar sobre isso? Plataforma Heroku, quando executo oheroku run python manage.py collectstatic comando esta tentativa procure um diretório que não existe ou não está configurado no diretório de estrutura do meu projeto?

Até eu tento criar o/app/neurorehabilitation/settings/staticpasta viaheroku run bash, mas isso não funciona

(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ heroku run bash
Running bash on test-nrb.... up, run.1604
~ $ cd neurorehabilitation/settings/
~/neurorehabilitation/settings $ mkdir static
~/neurorehabilitation/settings $ ls -all
total 36
drwx------ 3 u51683 dyno 4096 Apr  1 15:07 .
drwx------ 5 u51683 dyno 4096 Apr  1 15:02 ..
-rw------- 1 u51683 dyno 8106 Apr  1 15:02 base.py
-rw------- 1 u51683 dyno  684 Apr  1 15:02 development.py
-rw------- 1 u51683 dyno    0 Apr  1 15:02 __init__.py
-rw------- 1 u51683 dyno  930 Apr  1 15:02 production.py
-rw------- 1 u51683 dyno  530 Apr  1 15:02 staging.py
drwx------ 2 u51683 dyno 4096 Apr  1 15:07 static
-rw------- 1 u51683 dyno  488 Apr  1 15:02 testing.py
~/neurorehabilitation/settings $ exit
exit
(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ heroku run python manage.py collectstatic
Running python manage.py collectstatic on test-nrb.... up, run.5358

You have requested to collect static files at the destination
location as specified in your settings.

This will overwrite existing files!
Are you sure you want to do this?

Type 'yes' to continue, or 'no' to cancel: yes
Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/app/.heroku/python/lib/python3.4/site-packages/django/core/management/__init__.py", line 353, in execute_from_command_line
    utility.execute()
  File "/app/.heroku/python/lib/python3.4/site-packages/django/core/management/__init__.py", line 345, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/app/.heroku/python/lib/python3.4/site-packages/django/core/management/base.py", line 348, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/app/.heroku/python/lib/python3.4/site-packages/django/core/management/base.py", line 399, in execute
    output = self.handle(*args, **options)
  File "/app/.heroku/python/lib/python3.4/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 176, in handle
    collected = self.collect()
  File "/app/.heroku/python/lib/python3.4/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 98, in collect
    for path, storage in finder.list(self.ignore_patterns):
  File "/app/.heroku/python/lib/python3.4/site-packages/django/contrib/staticfiles/finders.py", line 112, in list
    for path in utils.get_files(storage, ignore_patterns):
  File "/app/.heroku/python/lib/python3.4/site-packages/django/contrib/staticfiles/utils.py", line 28, in get_files
    directories, files = storage.listdir(location)
  File "/app/.heroku/python/lib/python3.4/site-packages/django/core/files/storage.py", line 299, in listdir
    for entry in os.listdir(path):
FileNotFoundError: [Errno 2] No such file or directory: '/app/neurorehabilitation/settings/static'
(nrb_dev) ➜  neurorehabilitation_projects git:(master)

Eu não sabia como resolver esse problema. Por que na minha implantação heroku não cria o diretório de estruturas semelhante ao meu projeto local?

Alguém qual é o motivo disso?

É possível que, no momento, eu ainda não tenha entendido bem como funciona o heroku no momento da implantação em relação ao diretório e arquivos da estrutura, quando estes são carregados na plataforma viagit push heroku master?

Qualquer suporte será muito apreciado.

Obrigado pela orientação :)

questionAnswers(2)

yourAnswerToTheQuestion