如何在 CentOS 服务器上授予其他用户访问虚拟环境的权限

How to grant access to virtual environment to other users on CentOS server

我使用了本教程(GoDaddy 推荐,因为我有 GoDaddy VPS)

https://www.godaddy.com/garage/how-to-install-and-configure-python-on-a-hosted-server/

安装 Python (3.6.6) 的次要版本,并使用 Python 的次要版本为 运行 模块创建虚拟环境。我希望能够在虚拟环境中 运行 脚本,但不想总是使用管理员帐户来执行此操作。我设置了另一个没有管理员权限的帐户。有没有办法将权限扩展到创建它的管理员帐户之外?我是否需要在每个将有权访问 运行 python 的用户帐户上创建一个虚拟环境?

它说要在 bash_profile 脚本中添加一行。脚本已经有这个:

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
     . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

这是有道理的,因为它似乎定义了基础 Python(即 2.6.6)的位置。我在 venv 中有模块需要 3.4+,所以我创建了虚拟环境。对于某些脚本,我希望能够从 Chrome 和 运行 调用脚本,对于其他脚本,我希望能够从 cronjob 调用 运行 脚本,并且脚本需要始终指向 virtualenv 才能使用它安装的解释器。我不知道如何正确地做到这一点。这是我的系统信息和一些 SSH 打印输出的结果:

$ cd $PATH
-bash: cd: /home/flohosti/.local/bin:/home/flohosti/perl5/bin:/usr/local/cpanel/3rdparty/lib/path-bin:/usr/local/cpanel/3rdparty/lib/path-bin:/usr/local/cpanel/3rdparty/lib/path-bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/cpanel/composer/bin: No such file or directory

在进入 VirtualEnv 之前,我 运行 which python 得到了我预期的 /usr/bin/python。

有多种方法可以做到这一点。

您可以简单地授予对安装虚拟环境的目录的读取权限,然后在 /etc/profile 中导出其路径,以便它自动添加到每个用户路径中。

或者您可以访问虚拟环境文件夹中的 python 二进制文件。

也就是说这不是解决问题的正确方法,大多数时候你会希望在你的 projet 文件夹中有一个虚拟环境,这样它就可以自动用于项目以及谁可以访问那个项目。

编辑 1

所以你评论的答案

是的,您绝对可以使用相同的虚拟环境在 cron 中执行脚本,但是您必须在 cron 中提供虚拟环境和脚本的绝对路径,例如 /home/flohosti/projectOne/env/bin/python <script path> 或者您可以设置cron 中的 PATH 然后你也可以使用相对路径。