问题 共享Python virtualenv环境


我在一个用户帐户中有一个Python virtualenv(使用virtualenvwerapper创建)。我想从同一主机上的其他用户帐户使用它。

我怎样才能做到这一点? 如何设置虚拟环境以便主机上的任何用户可以使用? (主要是Linux / Debian,还有Mac OSX。)

谢谢。


7042
2018-02-29 20:40


起源



答案:


将其放在用户中立的目录中,并使其可读组。

例如,对于库,我使用 /srv/http/share/ 用于跨Web应用程序共享代码。

你可以用 /usr/local/share/ 适用于普通应用。


6
2018-02-29 20:44



但是使用该目录的virtualenv / virtualenvwrapper语法是什么?使用virtualenvwrapper,命令行<< workon some_env >>在用户的.virtualenv目录中查找环境。 - chernevik
你什么意思?你用 . bin/activate 照常。 - Flavius
对不起,我不跟进。当我切换到一个环境时,我的命令行是<< workon some_env >> - 我不触摸bin / activate。 - chernevik
现在我懂了。 1:用<< virtualenv hothouse -p python2.7 >>创建环境。这将为工作目录中的环境创建一个目录,并使用子目录bin /和脚本激活。 2:使用带有<< source [环境目录的绝对路径] / bin / activate >>的环境。通过适当的权限,终端环境现在称为virtualenv。离开时停用。同样的调用适用于使用virtualenvwrapper创建的环境。谢谢。 - chernevik
@Flavius你只需要 sudo mv ~/.virtualenvs /usr/local/share, mkdir -p /usr/src/venv_projects/, chmod g+rwx /usr/local/share/.virtualenvs,`chmod g + rwx / usr / local / share / venv_projects`然后编辑你的环境变量 virtualenvwrapper (通常在 .bashrc 之前 source virtualenvwrapper.sh)。你的新bashrc应该有像这样的行 export PROJECT_HOME="/usr/src/venv" 和 export WORKON_HOME="/usr/src/venv。一旦你(或你小组中的其他人)登录(假设他们也将这些行放在他们的bashrc中!)他们可以使用 workon 和 mkproject 像往常一样命令 - hobs


答案:


将其放在用户中立的目录中,并使其可读组。

例如,对于库,我使用 /srv/http/share/ 用于跨Web应用程序共享代码。

你可以用 /usr/local/share/ 适用于普通应用。


6
2018-02-29 20:44



但是使用该目录的virtualenv / virtualenvwrapper语法是什么?使用virtualenvwrapper,命令行<< workon some_env >>在用户的.virtualenv目录中查找环境。 - chernevik
你什么意思?你用 . bin/activate 照常。 - Flavius
对不起,我不跟进。当我切换到一个环境时,我的命令行是<< workon some_env >> - 我不触摸bin / activate。 - chernevik
现在我懂了。 1:用<< virtualenv hothouse -p python2.7 >>创建环境。这将为工作目录中的环境创建一个目录,并使用子目录bin /和脚本激活。 2:使用带有<< source [环境目录的绝对路径] / bin / activate >>的环境。通过适当的权限,终端环境现在称为virtualenv。离开时停用。同样的调用适用于使用virtualenvwrapper创建的环境。谢谢。 - chernevik
@Flavius你只需要 sudo mv ~/.virtualenvs /usr/local/share, mkdir -p /usr/src/venv_projects/, chmod g+rwx /usr/local/share/.virtualenvs,`chmod g + rwx / usr / local / share / venv_projects`然后编辑你的环境变量 virtualenvwrapper (通常在 .bashrc 之前 source virtualenvwrapper.sh)。你的新bashrc应该有像这样的行 export PROJECT_HOME="/usr/src/venv" 和 export WORKON_HOME="/usr/src/venv。一旦你(或你小组中的其他人)登录(假设他们也将这些行放在他们的bashrc中!)他们可以使用 workon 和 mkproject 像往常一样命令 - hobs


我必须为同事这样做。 @Flavius 回答 一旦我添加了一些命令来处理就很好 virtualenvwrapper。您需要将您的venvs和WORKON项目文件夹放在您和您的老板/朋友可以找到并使用的某个位置。

sudo mkdir -p /usr/local/share
sudo mv ~/.virtualenvs /usr/local/share
sudo mkdir -p /usr/src/venv/

假设您希望机器上的每个人都能够同时使用 mkproject 和 workon

chmod a+rwx /usr/local/share/.virtualenvs
chmod a+rwx /usr/src/venv

除此以外 chown 和 chmod 符合您的安全要求。

如果您有任何希望〜/ .virtualenvs处于正常位置的钩子或脚本,您最好将其符号链接(在您的用户帐户和您的朋友的身上)

ln -s /usr/local/share/.virtualenvs ~/.virtualenvs

然后修改你的(和你朋友的.bashrc 文件让virtualenvwrapper知道你移动的地方。你的bashrc应该是这样的:

export PROJECT_HOME="/usr/src/venv/"
export WORKON_HOME="/usr/local/share/.virtualenvs"

export USR_BIN=$(dirname $(which virtualenv))
if [ -f $USR_BIN/virtualenvwrapper.sh ]; then
    source $USR_BIN/virtualenvwrapper.sh
else
    if [ -f /usr/bin/virtualenvwrapper.sh ]; then
        source /usr/bin/local/virtualenvwrapper.sh
    else
        echo "Can't find a virtualenv wrapper installation"
    fi  
fi

一旦你注销并重新进入(或只是 source ~/.bashrc 你应该好好接受像这样的命令 mkproject awesome_new_python_project 和 workon awesome_new_python_project

作为奖励,每次加入时都添加钩子以加载项目文件夹 workon


5
2018-01-21 18:22



我似乎无法使其工作(在建议时无法找到模块) - 它的作用是什么 mkdir -p /usr/src/venv这是dir用于什么? - pepe