如何在不使用 sudo 的情况下安装 virtualenv?

Posted

技术标签:

【中文标题】如何在不使用 sudo 的情况下安装 virtualenv?【英文标题】:How to install virtualenv without using sudo? 【发布时间】:2012-03-10 01:40:40 【问题描述】:

我有easy_installpip

我的 Linux Mint 12 出现了很多错误,我刚刚重新安装了它,我想重新从头开始安装所有内容。

This 是我遇到的错误之一。我在那里收到了一个有趣的答案:

停止使用 su 和 sudo 运行 virtualenv。 您需要以普通用户身份运行 virtualenv。 您已经使用 sudo 创建了 virtualenv,这就是您收到这些错误的原因。

那么如何在不使用sudo的情况下安装virtualenv?我可以使用pipeasy_install而不使用sudo吗?还是有别的办法?

【问题讨论】:

请注意,当它显示susudo 时,它的实际含义是as root。您正在以 root 身份运行 virtualenv,而 virtualenv 不想以 root 身份运行。放弃权限,然后重试。 以 root 身份安装 virtualenv 与以 root 身份运行 之间存在很大差异。您插入的引用不是在谈论安装virtualenv,而是使用它为 Python 项目设置虚拟环境。 【参考方案1】:

此解决方案适用于系统范围内没有可用的virtualenv 并且您无法成为root 来安装virtualenv 的情况。当我为 python 开发或部署设置 debian 时,我总是apt-get install python-virtualenv。拥有它比执行下面指出的引导程序更方便。但如果没有根权,这可能是要走的路:

有一个引导机制可以帮助你前进。

阅读:http://peak.telecommunity.com/DevCenter/EasyInstall#creating-a-virtual-python

本质上,您可以在 unix 环境中的主目录中执行此操作:

鉴于您的 python 是 2.6 版

$ mkdir ~/bin $ mkdir -p ~/lib/python2.6 $ mkdir -p ~/local/lib/python2.6/dist-packages $ wget http://peak.telecommunity.com/dist/virtual-python.py $ python virtual-python.py --no-site-packages $ wget http://peak.telecommunity.com/dist/ez_setup.py $ ~/bin/python ez_setup.py $ ~/local/bin/easy_install virtualenv $ ~/local/bin/virtualenv --no-site-packages thereyouare

可能还有优化空间。我不喜欢local 路径。只要binlib 就好了。但它确实发挥了作用。

【讨论】:

非常感谢您的解决方案!使用python virtual-python.py --no-site-packages --prefix=`pwd`,我们可以将virtual-python安装到主文件夹以外的文件夹中,防止目录污染。 使用 -p 开关,您只需要第三行...递归目录创建就会发生。 也许这对旧版本的 virtualenv 有效。现在,如果你想在不是 root 的机器上运行 virtualenv:下载并解压一个,如果是:https://github.com/pypa/virtualenv/releases,然后运行 ​​python virtualenv.py /path/to/new/virtualenv/to/create【参考方案2】:

一般的想法是全局安装virtualenv本身,即sudo easy_install virtualenvsudo pip install virtualenv,然后在本地创建实际的虚拟环境(“运行virtualenv”)。

【讨论】:

// ,但问题是,如何。许多 virtualenv 包,尤其是 CEntOS 6,一旦安装就需要 sudo。【参考方案3】:

您也可以使用下面的命令,它对我没有sudo 访问权限。 您可能还需要使用export、see this SO answer for more details 修改您的PYTHONPATH 环境变量。

pip install --user virtualenv

【讨论】:

【参考方案4】:

http://opensourcehacker.com/2012/09/16/recommended-way-for-sudo-free-installation-of-python-software-with-virtualenv/ 建议如下:

curl -L -o virtualenv.py https://raw.githubusercontent.com/pypa/virtualenv/master/virtualenv.py
python virtualenv.py vvv-venv
. vvv-venv/bin/activate
pip install vvv

它似乎运作良好。它让我可以用pip 安装https://github.com/miohtama/vvv。

如果你得到:

Cannot find sdist setuptools-*.tar.gz
Cannot find sdist pip-*.tar.gz

在https://github.com/pypa/virtualenv/tree/develop/virtualenv_support下载压缩包后尝试--extra-search-dir

【讨论】:

【参考方案5】:

This 为我工作:

pip install --target=$HOME/virtualenv/ virtualenv
cd somewhere/
python $HOME/virtualenv/virtualenv.py env
. env/bin/activate

现在我可以pip install 任何我想要的东西(除了需要用 gcc 编译东西并且缺少依赖项,例如 python 开发库和Python.h)。

【讨论】:

【参考方案6】:

我创建了一个“便携式”version of virtualenv。

wget https://bitbucket.org/techtonik/locally/raw/tip/06.get-virtualenv.py
python 06.get-virtualenv.py

它将带有依赖关系的virtualenv.py 脚本下载到.locally 子目录并从那里执行它。完成后,可以将带有 .locally/ 子目录的脚本复制到任何地方。

【讨论】:

使用你的解决方案我得到这个错误:Checking hash/size for /files/spegni/.locally/virtualenv.py Traceback (most recent call last): File "06.get-virtualenv.py", line 163, in <module> getsecure(LOOT, filespec) File "06.get-virtualenv.py", line 132, in getsecure check(filepath, entry['hashsize'], quiet) File "06.get-virtualenv.py", line 113, in check % (filepath, shize, hashsize(filepath))) __main__.HashSizeCheckFailed: Hash/Size mismatch for /files/spegni/.locally/virtualenv.py exp: a506a836ef76301bc19e5a209984a4286529a79b 98477 act: d205cbd6783332a212c5ae92d73c77178c2d2f28 9 @FSp,pypa 团队杀死了 1.11.x 版本的分支。固定的。立即尝试。 更新到 virtualenv 12.0.7【参考方案7】:

到目前为止,我看到的最简单的方法是安装 Anaconda。 这对你来说可能是多余的。对我来说,远程服务器上运行的 centOS 只安装了 python2.6。 Anaconda 默认在本地安装所有内容 + 它是 python2.7

curl -O https://repo.continuum.io/archive/Anaconda2-4.2.0-Linux-x86_64.sh

然后

bash Anaconda2-4.2.0-Linux-x86_64.sh

轰隆隆。你已经安装了所有的包,比如 numpy 和 pip。 然后如果你想要 virtualenv,只需输入

pip install virtualenv

【讨论】:

这不能回答 OP 的问题。他已经有 pip 并且想在不执行 sudo 的情况下安装 virtualenv。 @Ghazi 问题是:“我想再次从头开始安装所有东西”。同样,即使它不能准确回答 OP 的问题,其他人也会发现它和我一样有用。 什么是“一切”? Anaconda 就是你的一切? 除非 OP 澄清它,否则它可以解释。我理解这类似于我的情况,他可以访问远程服务器,因此他无权访问 root 权限。所以他想安装virtualenv。我认为安装 anaconda 是解决这个问题的最简单方法。他不需要 sudo 特权就可以做到这一点。此外,他预先捆绑了所有的 python 包。 好的。很公平。您的答案刚刚出现在审核队列中以进行质量检查。【参考方案8】:

基本上这个想法是将virtualenv(或任何其他python包)安装到$HOME/.local中。这是最合适的位置,因为它默认包含在 python 路径中(不仅是 Python)。

您通过pip3 install virtualenv --prefix=$HOME/.local 执行的操作(您可能需要扩展$HOME)。 确保您的~/.profile 中有export PATH=$HOME/.local/bin:$PATH(如果刚刚添加,您可能需要source ~/.profile

【讨论】:

【参考方案9】:

您可能需要考虑使用Anaconda。它是一个成熟的 Python 发行版,位于一个文件夹中,例如你的主目录。在任何时候都不需要sudo,您可以获得大多数流行的软件包。

$ wget https://.../Anaconda2-2.5.0-Linux-x86_64.sh # check the website for the exact URL, it can change
$ bash Anaconda2-2.5.0-Linux-x86_64.sh
$ conda install virtualenv

【讨论】:

【参考方案10】:

我解决了为每个用户安装 virtualenv 的问题。

python3 -m pip install --user virtualenv

【讨论】:

【参考方案11】:
sudo virtualenv -p python myenv1

sudo su
source myenv1/bin/activate


pip install mypackage

这将安装在虚拟环境中

【讨论】:

以上是关于如何在不使用 sudo 的情况下安装 virtualenv?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使用 sudo 的情况下从终端窗口关闭 Internet 连接?

如何在不覆盖 TTY 的情况下将密码传递给 su/sudo/ssh?

在不使用 sudo 的情况下更改 root 用户拥有的文件的权限

在没有 sudo 的情况下运行特权 podman(并且没有用户名空间)

如何在不使用终端的情况下退出 omxplayer?

如何在不安装 Zend 框架的情况下使用 Zend 库