首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用brightway进口生态发明3.2

用brightway进口生态发明3.2
EN

Stack Overflow用户
提问于 2016-09-20 10:44:14
回答 2查看 456关注 0票数 0

我在用Brightway2导入Ecovoid3.2时遇到了一些困难,我遵循的是示例笔记本

代码语言:javascript
复制
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:只读项目 该项目正在由另一个进程使用,直到: 1.关闭另一个程序,或切换到另一个项目,2.调用projects.enable_writes并获得响应True,才能进行写入。 如果您确信此警告不正确,请调用projects.enable\_writes(force=True)以启用写操作。 warnings.warn(READ_ONLY_PROJECT)

如果我跑了

代码语言:javascript
复制
projects.enable_writes(force=True)

我又得到了一个错误

PermissionError跟踪(最近一次调用)在() ->1 projects.enable_writes(force=True) C:\Users\@@@\Anaconda3\envs\bw3\lib\site-packages\bw2data\project.py in enable_writes(self,force) 234“为当前项目启用写作”“235如果强制:-> 236 os.remove(os.path.join(self.dir ),(“写锁”)( 237 self.read_only = not self._lock.acquire(timeout = 0.05) 238,如果不是self.read_only: 'C:\Users\@@@\AppData\Local\pylca\Brightway3\myproject.4da39212894ad06eb7c95810f8a2a6b0\write-lock‘:PermissionError: WinError 32 El proceso no tiene acceso al archivo porque estásiendo utilizado por otro proceso: WinError

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

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

谢谢!

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

在上一台膝上型电脑中,导入的过程对机器来说似乎太多了(带有windows 10和6GB内存的ASUS S56CB )。在等待结果40分钟后,我通常绝望并杀死它。我会尝试重新安装python..。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-21 13:58:04

如何解决有关只读项目的错误?

Brightway2中的锁定是通过紧固件库完成的。如果您有两个python解释器正在运行,或者没有正确退出ipython笔记本(在完全关闭进程之前,您应该关闭或重新启动内核),那么项目目录中将有一个锁文件,您将得到有关只读项目的错误。顺便说一下,仅仅关闭一个ipython笔记本就不足以关闭python内核或释放锁。

很难诊断为什么这些错误会发生在您所报告的内容中。尝试以下几点:

1)看看你能不能把生态发明导入到一个新的项目中。

2)尝试重新启动计算机。

3)如果无法工作,可以在命令行或资源管理器窗口中删除文件C:\Users\@@@\AppData\Local\pylca\Brightway3\myproject.4da39212894ad06eb7c95810f8a2a6b0\write-lock

4)按照@Mpa在下一个答案中的建议进行操作,并设置projects.read_only = False

票数 1
EN

Stack Overflow用户

发布于 2016-09-26 18:06:02

克里斯说:“我在过去遇到过这种情况,这肯定是因为这个原因。”

您可以使用projects.read_only = False强制写入数据。请确保这是你真正想做的。例如,如果您通过两个不同的内核访问同一个项目,而这些内核可能试图同时写入数据,则不希望这样做。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39592050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档