如何安装没有根权限的python包?

2024-06-16 08:59:28 发布

您现在位置:Python中文网/ 问答频道 /正文

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

那么我如何在集群上运行我的脚本呢?有没有办法集成这些模块(numpy和scipy也有一些编译过的二进制文件,我认为)以便在不安装包的情况下对其进行解释和执行?


Tags: 模块工具numpy脚本节点oslinuxmac
3条回答

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

sys.path.append()

可以通过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:

    virtualenv venv
    

在主目录中安装包不需要根权限。你可以通过一个命令来完成,比如

pip install --user numpy

或来源

python setup.py install --user

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


第一种选择更方便,因此如果服务器没有pipeasy_install,您应该礼貌地要求管理员添加它,并向他们解释其好处(他们不会再被个别包的请求所困扰)。

相关问题 更多 >