Statische Assets vom lokalen Computer auf heroku bereitstellen - Datei 'manage.py' kann nicht geöffnet werden: [Errno 2] Keine solche Datei oder kein solches Verzeichnis

Ich versuche, meine Assets-Dateien für Heroku bereitzustellen und erhalte diese Ausgabe in meiner Befehlszeilenschnittstelle:

(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) ✗ 

Es ist seltsam für mich, weil ich mich gerade in dem Verzeichnis / Ordner befinde, in dem sich das @ befindemanage.py Datei befindet sich

Mit der Reihenfolge, um eine frühzeitige Bereitstellung einer Anwendung zu erhalten, habe ich die Umgebungsvariable @ deaktivierDISABLE_COLLECT_STATIC von diesem Weg:

(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)

Nach dem oben Gesagten, wenn ichgit push heroku master Ich kann meine Anwendung bereitstellen:

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) ✗

Nach den vorherigen Aktionen in meinem Hauptlinkhttps: //neurorehabilitation.herokuapp.com Es ist ein Fehler aufgetreten, ich denke, das liegt daran, dass die statischen Dateien nicht gesendet und deaktiviert wurden.

Ist das richtig? Ich weiß es nicht ..

Aber etwas, das seltsam erscheint, ist das in meinem Django Adminhttps: //neurorehabilitation.herokuapp.com/admin Ich kann die Vorlage und die CSS-Stile und Js im Admin detaillieren. Ich weiß nicht, ob Heroku mit statischen Dateien arbeitet oder nicht.

Was ist hier in dieser Situation mit meinen statischen Dateien passiert?

Ich verfolge jedoch meinen Prozess und kann bei dieser Gelegenheit remote Heroku-Aktionen bereitstellen, die mit dem @ zusammenhängemanage.py Befehle.

Ich habe dies überprüft, weil ich meine Migrationen meiner Anwendung ausführen kann:

(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)

Auch kann ich in meiner bereitgestellten Anwendung einen Superuser von meinem lokalen Toolbet erstellen ...

(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) ✗ 

Nachdem habe ich die Einrichtung der Umgebungsvariablen deaktiviert.DISABLE_COLLECTSTATIC=1 ( Ich habe die Umgebungsvariable aus meinem Einstellungs-Dashboard gelöscht. Heroku application)

Aber wen ich nochmal das @ ausführheroku run python manage.py collectstaticBefehl erhalte ich diese Benachrichtigung:

(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) ✗

Überprüfen Sie dies unbequem, ich denke, dass mein Fehler hier am Ende ist:

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'

Und dies sagt mir, dass in meiner bereitgestellten Heroku-Anwendung das @ nicht existierstatic Verzeichni

Ich habe @ ausgefühheroku run bashberprüfen Sie das Strukturverzeichnis in meiner Heroku-Anwendung, und ich kann das Stammprojekt mit dem Namen "@" genauer beschreibe/app in heroku

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

Ich habe das @ aufgelist/app content und ich sehe alle meine Verzeichnisse und Dateien auf ähnliche Weise wie in meiner lokalen Entwicklungsumgebung. django project

~ $ 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

Mit meinem Fehler ist dieses Thema verknüpft:

FileNotFoundError: [Errno 2] Keine solche Datei oder kein solches Verzeichnis: '/ app / neurorehabilitation / settings / static'

Dann betrete ich dieses Verzeichnis/app/neurorehabilitation/settings/ aber ich kann sehen, dass es kein Verzeichnis mit dem Namen @ gistatic inside, das ist der Weg, wie Heroku versuchen, zu suchen:

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

Und das liegt daran, dass ich das Strukturverzeichnis beim Erstellen meines Django-Projekts in meiner lokalen Entwicklungsumgebung festgelegt habe. Ich definiere folgendes:

Dann nach der vorherigen Situation ...

Warum, wenn ich eine Bereitstellung für Heroku durchführe, sucht der Prozess nach einem Pfad zuneurorehabilitation/settings/static Wenn dies nicht von der ursprünglichen Sproject-Quelle eingerichtet wurde, bedeutet dies, dass mein Projekt auf meinem Computer vor der Bereitstellung auf heroku?

Was könnte ich dagegen unternehmen? Heroku-Plattform, wenn ich das @ ausführheroku run python manage.py collectstatic Befehl dieser Versuch Suche ein Verzeichnis, das nicht existiert oder nicht im Strukturverzeichnis meines Projekts eingerichtet ist?

Selbst ich versuche das @ zu erstell/app/neurorehabilitation/settings/static Ordner überheroku run bash, aber das funktioniert nicht

(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)

Ich weiß nicht, wie ich dieses Problem angehen soll. Warum erstellt meine Heroku-Bereitstellung nicht das Strukturverzeichnis, das meinem lokalen Projekt ähnelt?

Jemand was ist der Grund dafür?

Ist möglich, dass ich im Moment immer noch nicht gut verstehe, wie Heroku zum Bereitstellungszeitpunkt in Bezug auf Strukturverzeichnis und Dateien funktioniert, wenn diese über @ auf die Plattform hochgeladen werdgit push heroku master?

Jede Unterstützung wird sehr geschätzt.

Danke für die Orientierung:)

Antworten auf die Frage(4)

Ihre Antwort auf die Frage