leveldb无法在wsl1中使用
Posted ZGJ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leveldb无法在wsl1中使用相关的知识,希望对你有一定的参考价值。
1、WSL1 不支持 FUSE 文件系统,因此无法在 WSL1 中直接使用 LevelDB。LevelDB 使用 FUSE 来提供基于文件的存储,因此在 WSL1 中无法正常运行。
但是,您仍然可以在 WSL1 上使用 Leveldb 的 API,只需将数据存储在本地文件系统中即可。这意味着您需要使用本地 Windows 文件系统或其他支持 WSL1 的文件系统(如 NTFS 或 ext4fs)来存储 LevelDB 的数据库。
如果您需要在 WSL1 中使用类似于 LevelDB 的键值存储库,建议考虑使用 SQLite 或 RocksDB 等理解适用于本地文件系统的存储引擎。
2、FUSE(文件系统在用户空间)是一种允许非特权用户创建和挂载文件系统的机制。它将文件系统的实现移到了用户空间,并通过与内核通信来提供文件系统服务。
FUSE 使得开发者能够使用用户态编程语言(如 Python、Ruby、Java 等)来实现文件系统,而无需直接操作内核代码。FUSE 的原理是,在启动时挂载一个虚拟的特殊目录,当然你可以在这个虚拟的目录下再挂载其他自定义文件系统。
在 Linux 系统中,很多功能强大的文件系统都是基于 FUSE 实现的,例如 NTFS-3G、sshfs、encfs 等。对于存储、备份、共享等方面的需求,FUSE 文件系统可以为应用程序提供良好的支持。
另外建了几个QQ技术群:
2、全栈技术群:616945527,加群口令abc123
2、硬件嵌入式开发: 75764412
3、Go语言交流群:9924600
闲置域名WWW.EXAI.CN (超级人工智能)出售。
无法通过 WSL 使用 conda 显示 matplotlib 的输出
【中文标题】无法通过 WSL 使用 conda 显示 matplotlib 的输出【英文标题】:Unable to display output from matplotlib using conda through WSL 【发布时间】:2021-06-24 12:03:08 【问题描述】:我正在尝试在 wsl 上使用 anaconda 运行 ToPy(拓扑优化)程序。 所以,我用python-2.7和ToPy推荐的所有其他程序创建了一个环境。
我在显示从 wsl 到 Xming 的输出时遇到错误。 经过一些紧张的调试后,我得出结论,我在 anaconda 环境中安装的 matplotlib 不支持输出。 (我最初认为它是 Tkinter 的一个错误,但当我在 python-2.7 和 python3 上尝试它时它起作用了,我得出的结论是 matplotlib 是在使用两个 python 解释器在 vscode 上运行测试代码[下面]后出现的问题)
测试代码:test.py
import matplotlib.pyplot as plt
import numpy as np
t = np.arange(0.0, 2.0, 0.01)
s = 1 + np.sin(2*np.pi*t)
plt.plot(t, s)
plt.title('About as simple as it gets, folks')
plt.show()
这段代码在wsl(不是conda)中工作,并给了我一个输出。在 conda 中使用 python3 工作;通过 XMing 给了我一个输出。但未能用 python-2.7.15 给我输出 我收到此错误:
Traceback (most recent call last):
File "optimise.py", line 20, in <module>
optimise(argv[1])
File "optimise.py", line 16, in optimise
topy.optimise(t)
File "/home/sree/anaconda3/envs/py27/lib/python2.7/site-packages/topy/optimisation.py", line 67, in optimise
_optimise(topology)
File "/home/sree/anaconda3/envs/py27/lib/python2.7/site-packages/topy/optimisation.py", line 43, in _optimise
create_2d_imag(t.desvars, **params)
File "/home/sree/anaconda3/envs/py27/lib/python2.7/site-packages/topy/visualisation.py", line 56, in create_2d_imag
figure() # open a figure
File "/home/sree/anaconda3/envs/py27/lib/python2.7/site-packages/matplotlib/pyplot.py", line 533, in figure
**kwargs)
File "/home/sree/anaconda3/envs/py27/lib/python2.7/site-packages/matplotlib/backend_bases.py", line 161, in new_figure_manager
return cls.new_figure_manager_given_figure(num, fig)
File "/home/sree/anaconda3/envs/py27/lib/python2.7/site-packages/matplotlib/backends/_backend_tk.py", line 1046, in new_figure_manager_given_figure
window = Tk.Tk(className="matplotlib")
File "/home/sree/anaconda3/envs/py27/lib/python2.7/lib-tk/Tkinter.py", line 1819, in __init__
self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
_tkinter.TclError: couldn't connect to display ":0.0"
我检查了echo $DISPLAY
返回:0.0
我在使用 python-2.7.15 的 conda env 中尝试了xeyes
和其他输出;我通过 XMing 获得输出,但不是 matplotlib 绘图。
我真的需要尽快完成这个项目;任何帮助将不胜感激。
TLDR;我在 wsl 中使用 anaconda 环境(使用 python-2.7.15)并尝试运行 ToPy 求解器;仅在使用 matplotlib 时无法获取输出。
对不起,如果我没有准确地表达这个问题;我最近开始编码并且是这个论坛的新手。
【问题讨论】:
嗯,我无法重现您的问题。我有 WSL2、Ubuntu 20.04,并且正在使用 MobaXTerm。我使用 pyenv (python 2.7.18) 安装了最新的 miniconda,使用 conda 安装了 matplotlib,然后使用 Qt 和 Tkinter 运行您的代码,并且都输出正常。当我使用echo $DISPLAY
时,我得到一个本地 IP 地址。您是否尝试重新安装此 python 版本以查看是否可以修复它?你能用一些稍微不同的版本试试你的测试代码吗?
我实际上不能。 ToPy 库使用 python-2.7。建议不要更新。你用 python-2.7 得到了正弦曲线的输出?
不,我的意思是不同的 python 2.7,比如 2.7.18,它不应该与代码混淆。或者一个全新的环境,从头开始安装。再说一遍,您需要查看输出吗?你不能不显示它,然后查看保存的图像吗?
哦,是的,我用 python 2.7 得到了正弦曲线
OMG THANK YOU SO MUCH 最后我在 ToPy 上得到了结果
【参考方案1】:
对于有类似问题的人 我让它只使用从 2.7.15 到 2.7.18 的 python 更新
我确实跑了conda install -c conda-forge r-tcltk2
它改变了一些冲突,后来我收到了glibcxx_3.4.26 not found
错误,但在将 linux 发行版和 python 更新到 2.7.18 之后。我可以运行我的模拟
非常感谢您的及时帮助
编辑: This 应该可以帮助解决安装问题的人
【讨论】:
以上是关于leveldb无法在wsl1中使用的主要内容,如果未能解决你的问题,请参考以下文章
最详尽教程完整介绍-Windows 的 Linux 子系统-WSL1&WSL2
sleep()函数在Ubuntu 20.04+WSL1不起作用