我在用Brightway2导入Ecovoid3.2时遇到了一些困难,我遵循的是示例笔记本
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)
如果我跑了
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..。
发布于 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。
发布于 2016-09-26 18:06:02
克里斯说:“我在过去遇到过这种情况,这肯定是因为这个原因。”
您可以使用projects.read_only = False强制写入数据。请确保这是你真正想做的。例如,如果您通过两个不同的内核访问同一个项目,而这些内核可能试图同时写入数据,则不希望这样做。
https://stackoverflow.com/questions/39592050
复制相似问题