2016-09-20 1 views
0

У меня возникли некоторые проблемы с импортом Ecoinvent 3.2 с Brightway2, я вслед за example notebook:импорта ecoinvent 3.2 с 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") 

я получаю сообщение предупреждение, которое, кажется, чтобы блокировать процесс импорта,

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)

если я бегу

projects.enable_writes(force=True) 

Я получаю другую ошибку пропуска

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'

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

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

спасибо!

UPDATE1: Я установил brightway2 на другом компьютере, и я нашел то же предупреждение. Несмотря на сообщение, импорт кажется правильным. как только база данных будет загружена и записана, если я снова открою проект, база данных все еще там.

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

ответ

1

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

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

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

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

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

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

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

+0

Спасибо! Я создал с нуля новые проекты и перезапустил ноутбук с тем же результатом. Я также попытался удалить файл «lock» вручную. Дело в том, что этот файл создается снова, когда я использую 'projects.set_current ('myproject')' файл блокировки создается снова, а затем система не позволяет мне стереть его (используя командную строку или окно проводника). – Nabla

1

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

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