【问题标题】:How to install python packages without root privileges?如何在没有root权限的情况下安装python包?
【发布时间】:2012-12-20 05:41:47
【问题描述】:

我正在使用numpyscipy / pynest 在 Mac OS X 上做一些研究计算。为了性能,我们从我们大学租用了一个 400 节点的集群(使用 Linux),这样任务就可以并行完成。问题是我们不允许在集群上安装任何额外的包(没有sudo 或任何安装工具),它们只提供原始 python 本身。

那我怎样才能在集群上运行我的脚本呢?有什么方法可以集成模块(我认为 numpy 和 scipy 也有一些已编译的二进制文件),以便在不安装包的情况下解释和执行它?

【问题讨论】:

  • 我不太清楚你到底在问什么——大多数 Python 模块只是你调用 import 的 Python 代码。如果这是问题所在,并且您不能使用 pipeasy_install,则可以下载这些软件包并将它们直接粘贴到您的 Python site-packages 中,然后只需 import 它们。
  • @jdotjdot 模块中不仅有python代码,还有编译好的二进制文件。
  • 对于numpyscipy,这是真的。但是“无法安装软件包”是什么意思?究竟是什么不允许您在集群上安装/放置?
  • @jdotjdot 我们不允许sudo,也没有安装工具。
  • 谢谢,这就是我想要的。看起来 David 已经提供了一个很好的答案。

标签: python numpy installation scipy


【解决方案1】:

您可以通过virtualenv 包创建虚拟环境。

这将创建一个文件夹(例如 venv),其中包含 Python 可执行文件的新副本和新的 site-packages 目录,您可以在其中“安装”任意数量的包,而无需任何类型的管理访问权限。因此,通过source venv/bin/activate 激活环境将为Python 提供一个相当于安装这些包的环境。

我知道这适用于 SGE 集群,但如何激活虚拟环境可能取决于您的集群配置。

您可以尝试使用以下步骤在您自己的站点包目录中的集群上安装virtualenv

  1. here下载virtualenv,放到你的集群上

  2. 使用setup.py 将其安装到特定的本地目录,作为您自己的站点包:

    python setup.py build
    python setup.py install --install-base /path/to/local-site-packages
    
  3. 将该目录添加到您的 PYTHONPATH:

    export PYTHONPATH="/path/to/local-site-packages:${PYTHONPATH}"
    
  4. 创建一个虚拟环境:

    virtualenv venv
    

【讨论】:

  • 谢谢!如何在没有sudopipeasy_install的情况下安装virtualenv
  • @Skyler:你可以在你有控制权的系统上安装virtualenv,在那里创建virtualenv,然后将文件传输到集群(除非我弄错了,我可能是,您甚至不需要virtualenv 来激活环境,只需创建它——环境是使用 bash 脚本激活的)。 但是,只有当您创建 virtualenv 的系统与集群具有相同的操作系统和架构时才有效 - 您可能需要进行大量自定义。
  • @Skyler:再想一想,在本地站点包目录中安装virtualenv 可能会更容易(基本上是根据您的能力引导您的方式)。在我的编辑中尝试这种方法(我根本没有测试过,所以让我知道你在路上遇到了什么问题)。
  • 嗨大卫,第 2 步给出了error: install-base or install-platbase supplied, but installation scheme is incomplete。我错过了什么吗?
  • @Skyler:对不起-尝试用--home替换--install-base
【解决方案2】:

您不需要 root 权限即可在您的主目录中安装软件包。您可以使用诸如

之类的命令来做到这一点
pip install --user numpy

或来自来源

python setup.py install --user

https://stackoverflow.com/a/7143496/284795


第一种更方便,所以如果服务器没有pipeasy_install,你应该礼貌地要求管理员添加它,向他们解释好处(他们不会再被打扰了根据对单个包裹的要求)。

【讨论】:

  • 请管理员添加,我怎么没想到呢!我的天啊,我们极客很烂...
  • @Skyler:询问管理员绝对是最好的选择!根据您的问题,我认为他们可能会反对。 (我仍然建议在安装 pip 后使用 virtualenvs,顺便说一下,它也可以作为this other question of yours 的解决方案。
  • 这应该是python setup.py install --user。见pythonhosted.org/setuptools/easy_install.html#id37
【解决方案3】:

您可以通过调用从任意路径导入模块:

sys.path.append()

【讨论】:

    【解决方案4】:

    Python Distribution Anaconda 解决了这个问题中讨论的许多问题。 Anaconda 不需要管理员或 root 访问权限,并且能够安装到您的主目录。 Anaconda 附带了许多有问题的软件包(scipy、numpy、sklearn 等)以及 conda 安装程序,以便在需要其他软件包时安装其他软件包。

    可以从https://www.continuum.io/downloads下载

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-19
      • 1970-01-01
      • 2019-02-25
      • 2011-11-19
      • 2011-04-13
      • 2015-11-12
      • 2013-05-29
      相关资源
      最近更新 更多