Ubuntu16.04下在virtualenv中安装bluepy的问题求助
嘿,我来帮你搞定这个问题!首先得明确一个关键:绝对不要用sudo在激活的virtualenv里运行pip命令!因为sudo会切换到root用户,完全脱离了你当前激活的虚拟环境上下文,还会搞乱你用户目录下pip缓存的权限——这正是你看到错误提示的原因。
下面是一步步的解决步骤:
先确认虚拟环境已正确激活
看一眼终端提示符,应该能看到你虚拟环境的名字(比如(myenv) todd@ubuntu:~$),如果没激活,先运行激活命令:# 假设你的虚拟环境在~/myenv目录下,替换成你自己的路径 source ~/myenv/bin/activate验证虚拟环境中的pip路径是否正确
激活后运行这条命令,输出路径必须指向你虚拟环境的bin目录:which pip3 # 正确输出示例:/home/todd/myenv/bin/pip3如果输出的是全局pip路径(比如/usr/bin/pip3),说明虚拟环境没激活到位,或者创建时出了问题,得重新激活或检查虚拟环境。
直接在虚拟环境中安装bluepy
确保虚拟环境激活后,直接运行这条命令,不需要加sudo:pip3 install bluepy虚拟环境的权限完全属于你当前用户,绝对有权限在里面安装包。
修复被sudo搞乱的pip缓存权限(如果之前踩过这个坑)
要是你之前用sudo运行过pip,导致缓存目录变成root所有了,运行这条命令把权限改回你的用户:sudo chown -R todd:todd /home/todd/.cache/pip额外小技巧:如果想复用全局的bluepy(不推荐)
要是你不想在虚拟环境里重新安装,想直接用全局的bluepy,可以在创建虚拟环境时加上--system-site-packages参数,让虚拟环境继承全局包:virtualenv --system-site-packages myenv不过这种方式会破坏虚拟环境的隔离性,容易导致依赖冲突,一般不建议这么做,还是在虚拟环境里单独装依赖更干净。
完成这些步骤后,再运行pip freeze,就能看到bluepy出现在虚拟环境的依赖列表里啦。
内容的提问来源于stack exchange,提问作者twegner

