用brightway导入ecoinvent 3.2

时间:2016-09-20 10:44:15

标签: brightway

我在使用Brightway2导入Ecoinvent 3.2时遇到了一些问题,我正在关注example notebook

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:\用户\ @@@ \ Anaconda3 \ ENVS \ BW3 \ lib中\站点包\ bw2data \ project.py:157:   UserWarning:    只读项目

     

此项目正由另一个进程使用,无法写入   直到:       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(最近一次调用   最后)in()   ----> 1 projects.enable_writes(force = True)

     

C:\用户\ @@@ \ Anaconda3 \ ENVS \ BW3 \ lib中\站点包\ bw2data \ project.py   在enable_writes中(self,force)       234“”“启用当前项目的写入。”“”       235如果有力:    - > 236 os.remove(os.path.join(self.dir,“write-lock”))       237 self.read_only = not self._lock.acquire(timeout = 0.05)       238如果不是self.read_only:

     

PermissionError:[WinError 32] El proceso no tiene acceso al archivo   porqueestásiendoutilizado por otro proceso:   'C:\用户\ @@@ \应用程序数据\本地\ pylca \ Brightway3 \ myproject.4da39212894ad06eb7c95810f8a2a6b0 \写锁'

翻译的winerror类似于“进程无法访问该文件,因为该文件正被其他进程使用”

我没有同时运行其他Brightway环境,我最近更新了Brightway2,所以我不知道问题出在哪里。有什么想法吗?

谢谢!

UPDATE1:我在另一台计算机上安装了brightway2,但我发现了相同的警告信息。尽管有消息,但导入似乎是正确的。一旦数据库被加载和写入,如果我再次打开项目,数据库仍然存在。

在之前的笔记本电脑中,导入过程对于机器来说似乎太多了(华硕S56CB带有Windows 10和6 GB RAM)。在等待结果40分钟后,我通常绝望并杀死它。我将尝试重新安装python ...

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

我过去遇到过这种情况,肯定是因为@Chris引起的原因。

您可以使用projects.read_only = False强制写入数据。请确保这确实是您想要做的。您将想要这样做,例如,如果您通过两个可能尝试同时写入数据的不同内核访问同一个项目。