无需 activate 运行虚拟环境内软件
前情提要
- 做毕设的时候,需要用到
LEfSe这个软件包。由于年久失修(最后一次更新是在2021年8月),新版本Python里的某些函数和它已经不再兼容,所以我把它单独安装在一个python=3.8的虚拟环境里。 - 但是在虚拟环境
ProjectM内的snakemake使用绝对路径调用lefse_run.py的时候出现了问题。原因是在lefse_run.py命令内部还调用了LEfSe所在虚拟环境内的R。虽然可以通过临时改变环境变量等方法解决,但还是不太方便。那么,有没有一种更优雅的办法呢?
解决
使用 conda
- 在翻阅
conda官方手册的时候,我注意到run这个命令。官方给出的解释与示例如下:# Run an executable in a conda environment. usage: conda run [-h] [-n ENVIRONMENT | -p PATH] [-v] [--dev] [--debug-wrapper-scripts] [--cwd CWD] [-s] ... # Examples: conda create -y -n my-python-env python=3 conda run -n my-python-env python --version - 个人觉得应该就是节省了
activate对应虚拟环境这一步操作。这样对于编写脚本或流程时调用多个虚拟环境内的不同软件会更加友好~
使用 micromamba
- 与
conda同理,只是换成了micromamba。 - 注意⚠️,创建新环境的时候
conda无需使用env子命令,而micromamba则需要。# Examples: micromamba env create -y -n my-python-env python=3 micromamba run -n my-python-env python --version