建议粗略看下之前的

学会使用强化学习框架Acme(2)_wo_squirrel的博客-CSDN博客建议先看 学会使用强化学习框架Acme(1)接下来安装一下例程环境:pip install dm-acme[envs]在之前创建好的虚拟环境中运行:(acme) jw@Z8:~$ pip install dm-acme[envs]Requirement already satisfied: dm-acme[envs] in ./anaconda3/envs/acme/lib/python3.8/site-packages (0.4.0)Requirement already sahttps://blog.csdn.net/wo_squirrel/article/details/124289196

下载好acme在github上的所有文件。

进入下载好的acme的子目录examples

并用jupyter打开quickstart.ipynb

(acme) jw@Z8:~/acme-master/examples$ jupyter-notebook

进到jupyter中,点击运行。

(代码前的!告诉jupyter在shell中运行。)

提示我输入密码,在jupyter中怎么输入密码?

搜了一下,在jupyter笔记本中使用sudo - 问答 - Python中文网

这里说到可以把第一行替换为

!echo password|sudo -S apt-get install -y xvfb ffmpeg

也就是在前面加上一些东西。使用这行命令

!echo {password}|sudo -S {command}

echo命令将从名为password的变量中获取真正的密码(例如“funkymonkey”),然后将其导入sudo的command变量(这是一个描述shell命令的字符串,例如“apt get update”)。

修改后成功运行。

继续运行:

 出现ImportError。


(两个水平线之间的是我的尝试,第二个水平线后是解决方法,建议大家先看最后,最后的方法不管用再看看我的尝试,虽然不能解决问题,但可能会给出一个解决问题的思路)

转天再次尝试,出现:

2022-04-21 11:55:29.534630: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /home/jw/catkin_ws/devel/lib:/opt/ros/noetic/lib
2022-04-21 11:55:29.534705: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
/home/jw/anaconda3/envs/acme/lib/python3.8/site-packages/flatbuffers/compat.py:19: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses

第一行说不能加载动态库,不能打开共享目标文件,最重要的是

LD_LIBRARY_PATH:/home/jw/catkin_ws/devel/lib:/opt/ros/noetic/lib

LD_LIBRARY_PATH是Linux环境变量名,该环境变量主要用于指定查找共享库(动态链接库)时除了默认路径之外的其他路径。

移植程序时的经常碰到需要使用一些特定的动态库,而这些编译好的动态库放在我们自己建立的目录里,这时可以将这些目录设置到LD_LIBRARY_PATH中。

路径是和ros有关的路径,可能是我之前学习ros把某些路径改了,导致tensorflow没法正常运行。

在.bashrc文件中将下面两行代码注释

#source /opt/ros/noetic/setup.bash
#source ~/catkin_ws/devel/setup.bash

错误消失,但是又出现了昨天的错误。ImportError。

(这里我重新安装了虚拟环境,python版本从3.8改为3.9。)

注意到错误提示的最后一行

ImportError: libtensorflow_framework.so.2: cannot open shared object file: No such file or directory

找到了类似的问题和解答:

解决tensorflow报错 libtensorflow_framework.so: cannot open shared object file: No such file or directory_Lynn_mg的博客-CSDN博客_libtensorflow_framework.so

 输入:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"/home/jw/anaconda3/envs/Acme/lib/python3.9/site-packages/tensorflow/libtensorflow_framework.so.2"

退出,重新打开notebook运行,出现错误:

ImportError: libpython3.9.so.1.0: cannot open shared object file: No such file or directory

 这次是1.0出了问题,让我有点怀疑上面那个方法的正确性,但还是用那个方法试一试。命令行输入:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"/home/jw/anaconda3/envs/Acme/lib/python3.9/site-packages/tensorflow/libtensorflow_framework.so.1.0"

再次运行,问题没有得到解决。

(这里是因为代码写错了要找libpython3.9.so.1.0,写成libtensorflow_framework.so.1.0)

这个LD_LIBRARY_PATH到底是什么?

当执行函数动态链接.so时,如果此文件不在缺省目录下‘/lib’ and ‘/usr/lib’.

那么就需要指定环境变量LD_LIBRARY_PATH

假如需要在已有的环境变量上添加新的路径名,则采用如下方式:

LD_LIBRARY_PATH=NEWDIRS:$LD_LIBRARY_PATH.(newdirs是新的路径串)

(注:GNU系统可以自动添加在 /etc/ld.so.conf文件中来实现环境变量的设置)

在linux下可以用export命令来设置这个值,比如

在linux终端下输入:export LD_LIBRARY_PATH=/opt/au1200_rm/build_tools/bin: $LD_LIBRARY_PATH:

然后再输入:export

即会显示是否设置正确

export方式在重启后失效,所以也可以用 vim /etc/bashrc ,修改其中的LD_LIBRARY_PATH变量。

例如:LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/au1200_rm/build_tools/bin。

使用指令查找libpython3.9.so.1.0

(base) jw@Z8:~$ sudo find / -name 'libpython3.9.so.1.0'
[sudo] jw 的密码: 
find: ‘/run/user/1000/doc’: 权限不够
find: ‘/run/user/1000/gvfs’: 权限不够
find: ‘/run/user/125/gvfs’: 权限不够
/home/jw/anaconda3/envs/Acme/lib/libpython3.9.so.1.0
/home/jw/anaconda3/pkgs/python-3.9.0-hdb3f193_2/lib/libpython3.9.so.1.0
/home/jw/anaconda3/pkgs/python-3.9.7-h12debd9_1/lib/libpython3.9.so.1.0
^C

第六行显示了在我的虚拟环境Acme中的lib中有这个文件,根据错误信息,要告诉jupyter notebook它要找的文件在Acme下的lib文件夹中,怎么告诉它呢?


最新进展:

在朋友的帮助下,根据错误提示

ImportError: libpython3.9.so.1.0: cannot open shared object file: No such file or directory

找不到libpython3.9.so.1.0,所以在虚拟环境的目录下查找这个文件

可以看到acme/lib中有这个文件,直接把他复制到client.py所在的目录中,也就是错误提示最后几行的目录

/home/jw/anaconda3/envs/acme/lib/python3.9/site-packages/courier/python

再次运行,没有报错

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐