Импорт ecoinvent 3.2 с помощью brightway

У меня возникли проблемы с импортом Ecoinvent 3.2 с Brightway2, я следовал примеру ноутбука:

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

Я получаю предупреждение, которое блокирует процесс импорта.

C:\Users\@@@\Anaconda3\envs\bw3\lib\site-packages\bw2data\project.py:157: Предупреждение пользователя: Проект только для чтения

Этот проект используется другим процессом, и запись невозможна, пока: 1. Вы не закроете другую программу или не переключитесь на другой проект, и 2. Вы не вызовете projects.enable_writes и получить ответ True,

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

warnings.warn(READ_ONLY_PROJECT)

если я бегу

projects.enable_writes(force=True)

Я получаю еще одно сообщение об ошибке

PermissionError Traceback (последний вызов был последним) в () ----> 1 projects.enable_writes (force = True)

C: \ Users \ @@@ \ Anaconda3 \ envs \ bw3 \ lib \ site-packages \ bw2data \ project.py в enable_writes(self, force) 234 """Включить запись для текущего проекта.""" 235 if force: -> 236 os.remove(os.path.join(self.dir, "write-lock")) 237 self.read_only = не self._lock.acquire(timeout = 0,05) 238, если не self.read_only:

PermissionError: [WinError 32] По умолчанию не допускается, как только вы получаете доступ к использованию: C:\Users\@@@\AppData\Local\pylca\Brightway3\myproject.4da39212894ad06eb7c95810f8a2a6b0 write \ write

переведенное winerror было бы что-то вроде "процесс не имеет доступа к файлу, потому что файл используется другим процессом"

У меня не работают другие среды Brightway одновременно, и я недавно обновил Brightway2, поэтому я не знаю, где может быть проблема. Есть идеи?

Спасибо!

ОБНОВЛЕНИЕ 1: я установил brightway2 на другом компьютере, и я нашел то же самое предупреждение. Несмотря на сообщение, импорт кажется правильным. когда база данных загружена и записана, если я снова открою проект, база данных все еще там.

В предыдущем ноутбуке процесс импорта кажется слишком сложным для машины (ASUS S56CB с Windows 10 и 6 ГБ ОЗУ). После 40 минут ожидания результата я обычно отчаиваюсь и убиваю его. Я попробую переустановить Python...

2 ответа

Решение

Посмотрите, как устранить ошибки в проектах только для чтения?,

Блокировка в Brightway2 осуществляется с помощью библиотеки крепежа. Если у вас запущены два интерпретатора Python или вы неправильно выходите из записной книжки ipython (вы должны выключить или перезапустить ядро, прежде чем полностью завершить процесс), в каталоге проекта будет файл блокировки, и вы получите ошибки о чтении только проекты. Кстати, просто закрыть ноутбук ipython недостаточно, чтобы закрыть ядро ​​python или снять блокировку.

Трудно диагностировать, почему эти ошибки могут происходить с тем, что вы сообщили. Попробуйте следующее:

1) Проверьте, можете ли вы импортировать ecoinvent в новый проект.

2) Попробуйте перезагрузить компьютер.

3) Если вы не можете заставить что-либо работать, вы можете удалить файл C:\Users\@@@\AppData\Local\pylca\Brightway3\myproject.4da39212894ad06eb7c95810f8a2a6b0\write-lock в командной строке или в окне проводника.

4) Сделайте то, что предложит @Mpa в следующем ответе, и установите projects.read_only = False,

Я сталкивался с этим в прошлом, конечно, из-за причин, вызванных @Chris.

Ты можешь использовать projects.read_only = False принудительно записывать данные. Пожалуйста, убедитесь, что это действительно то, что вы хотите сделать. Вы не захотите делать это, например, если вы обращаетесь к одному и тому же проекту через два разных ядра, которые могут пытаться записывать данные одновременно.

Другие вопросы по тегам