【问题标题】:How to install virtualenv without using sudo?如何在不使用 sudo 的情况下安装 virtualenv?
【发布时间】: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 项目设置虚拟环境。

标签: python django virtualenv pip easy-install


【解决方案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 访问权限。 您可能还需要使用exportsee 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
              

              这将安装在虚拟环境中

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2019-04-13
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2012-07-23
                • 2019-08-04
                • 2021-08-11
                • 2014-09-05
                相关资源
                最近更新 更多