我一直在为我的项目构建 debian 包。
当用户安装我的包时,我的项目的二进制文件安装在/usr/bin/*
. 然后,在最后调用一个 bash 脚本,该脚本创建 python 虚拟环境/usr/share/my_proejct/venv
并在该虚拟环境上安装所需的 python 包。
$ sudo dpkg -i my_project.deb
# being installed on /usr/bin/*
# automatically `sudo post_install.sh` is invoked(debian postinst)
$ cat post_install.sh
python3 -m pip install -U virtualenv # sudo
python3 -m venv /usr/share/my_project/venv # sudo
/usr/share/my_project/venv/bin/python -m pip install ${REQUIRED_PACKAGES}
我的项目的二进制文件正在使用该虚拟环境的 python。
AFAIK,使用 sudo 运行 pip 存在安全问题。但是我只是直接使用 virtualenv 的 python(
/usr/share/my_project/venv/bin/python
);我仍然virtualenv
使用 sudo 安装并venv
使用它创建。还危险吗?我可以将这个虚拟环境的 python 用于多个用户吗?