2016-09-20 1 views
0

ich einige Probleme habe Import Ecoinvent 3.2 mit Brightway2, ich wurde im Anschluss an die example notebook:Import ecoinvent 3.2 mit Brightway

from brightway2 import * 
fp = 'D:\LCAdb\e_3.2_cutoff_lci\datasets' 
projects.set_current("myproject") 
bw2setup() 
ei = SingleOutputEcospold2Importer(fp, "ecoinvent 3.2 cutoff") 

ich eine Warnmeldung, die den Importvorgang

C:\Users\@@@\Anaconda3\envs\bw3\lib\site-packages\bw2data\project.py:157: UserWarning: Read only project

This project is being used by another process and no writes can be made until: 1. You close the other program, or switch to a different project, and 2. You call projects.enable_writesand get the response True .

If you are **sure** that this warning is incorrect, call 
`projects.enable_writes(force=True)` to enable writes. 

warnings.warn(READ_ONLY_PROJECT)

zu blockieren scheint

wenn ich

projects.enable_writes(force=True) 

laufen bekomme ich eine andere ein persmission erro r

PermissionError Traceback (most recent call last) in() ----> 1 projects.enable_writes(force=True)

C:\Users\@@@\Anaconda3\envs\bw3\lib\site-packages\bw2data\project.py in enable_writes(self, force) 234 """Enable writing for the current project.""" 235 if force: --> 236 os.remove(os.path.join(self.dir, "write-lock")) 237 self.read_only = not self._lock.acquire(timeout = 0.05) 238 if not self.read_only:

PermissionError: [WinError 32] El proceso no tiene acceso al archivo porque está siendo utilizado por otro proceso: 'C:\Users\@@@\AppData\Local\pylca\Brightway3\myproject.4da39212894ad06eb7c95810f8a2a6b0\write-lock'

die WinError wäre übersetzt so etwas wie „der Prozess keinen Zugriff auf die Datei hat, da die Datei von anderen Prozess verwendet wird“

Ich habe keine andere Brightway Umgebungen zur gleichen Lauf Zeit und ich habe kürzlich Brightway2 aktualisiert, damit ich nicht weiß, wo das Problem liegen könnte. Irgendwelche Ideen?

danke!

UPDATE1: Ich habe Brightway2 in einem anderen Computer installiert und ich habe die gleiche Warnmeldung gefunden. Trotz der Nachricht scheint der Import korrekt zu sein. Sobald die Datenbank geladen und geschrieben ist, wenn ich das Projekt erneut öffne, ist die Datenbank immer noch da.

Im vorherigen Laptop scheint der Prozess des Importierens zu viel für die Maschine (ein ASUS S56CB mit Windows 10 und 6 GB RAM). Nach 40 Minuten, die auf das Ergebnis warten, verzweifle ich normalerweise und töte es. Ich werde versuchen, Python erneut zu installieren ...

Antwort

1

Siehe how do I resolve errors about read-only projects?.

Die Verriegelung in Brightway2 erfolgt mit der Bibliothek fasteners. Wenn Sie zwei Python-Interpreter ausführen oder ein Ipython-Notizbuch nicht ordnungsgemäß beenden (Sie sollten einen Kernel herunterfahren oder neu starten, bevor Sie den Prozess vollständig schließen), befindet sich eine Sperrdatei im Projektverzeichnis und Sie erhalten Fehler beim Lesen - nur Projekte. Übrigens genügt es nicht, einfach nur ein Ipython-Notizbuch zu schließen, um den Python-Kernel herunterzufahren oder die Sperre aufzuheben.

Es ist schwierig zu diagnostizieren, warum diese Fehler mit dem, was Sie gemeldet haben, auftreten könnten. Versuchen Sie Folgendes:

1) Sehen Sie, ob Sie ecoinvent in ein neues Projekt importieren können.

2) Versuchen Sie, Ihren Computer neu zu starten.

3) Wenn Sie nichts erreichen können, können Sie die Datei C:\Users\@@@\AppData\Local\pylca\Brightway3\myproject.4da39212894ad06eb7c95810f8a2a6b0\write-lock in der Befehlszeile oder in einem Explorer-Fenster löschen.

4) Tun Sie, was @Mpa in der nächsten Antwort vorschlagen, und setzen Sie projects.read_only = False.

+0

Danke! Ich habe von Grund auf neue Projekte erstellt und den Laptop mit dem gleichen Ergebnis neu gestartet. Ich habe auch versucht, die "Lock" -Datei manuell zu löschen. Die Sache ist, dass diese Datei neu erstellt wird, wenn ich 'projects.set_current ('myproject')' verwende, die Sperrdatei wird erneut erstellt und dann lässt mich das System sie nicht löschen (entweder über die Befehlszeile oder das Explorer-Fenster). – Nabla

1

Ich bin in der Vergangenheit darauf gestoßen, sicherlich wegen der Gründe, die @Chris hervorgerufen hat.

Sie können projects.read_only = False verwenden, um Daten zu erzwingen. Bitte stellen Sie sicher, dass dies wirklich das ist, was Sie tun möchten. Sie werden nicht möchten, zum Beispiel, wenn Sie auf das gleiche Projekt durch zwei verschiedene Kernel zugreifen, die versuchen können, Daten zur gleichen Zeit zu schreiben.