How to install python packages without root privileges?
我正在使用numpy / scipy / pynest在Mac OS X上进行一些研究计算。为了提高性能,我们从我们的大学租用了一个400节点的集群(带有Linux),以便可以并行完成任务。 问题是我们不允许在集群上安装任何额外的软件包(没有sudo或任何安装工具),它们只提供原始python本身。
如何在群集上运行我的脚本呢? 有没有办法集成模块(numpy和scipy也有一些我认为编译的二进制文件),以便它可以解释和执行而无需安装包?
-
我并不清楚你究竟在问什么 - 大多数Python模块只是你称之为import的Python代码。 如果这是问题,并且你不能使用pip或easy_install,你可以直接下载软件包并将它们粘贴在Python site-packages中,然后只需import。
-
@jdotjdot不仅有python代码,还有模块中的二进制编译。
-
对于numpy和scipy,这是真的。 但你是什么意思"无法安装包"? 您不允许安装/放置群集到底是什么?
-
@jdotjdot我们不允许sudo,也没有任何安装工具。
-
谢谢,这就是我在寻找的东西。 看起来David已经提供了一个很好的答案。
-
@jdotjdot感谢您提出我的问题。
-
服务器是否有pip或easyinstall?
-
@ColonelPanic不,没有任何安装工具。
-
如果没有安装所需的依赖项(在python之外),scipy可能不那么容易安装
您不需要root权限即可在主目录中安装软件包。您可以使用诸如此类的命令来执行此操作
1
| pip install --user numpy |
或来自消息来源
1
| python setup.py install --user |
请参阅https://stackoverflow.com/a/7143496/284795
第一种选择更方便,所以如果服务器没有pip或easy_install,你应该礼貌地要求管理员添加它,向他们解释好处(他们不会再受到请求的困扰)个别包裹)。
-
礼貌地要求管理员添加它,为什么我没想到呢!天哪,我们太棒了...
-
@Skyler:问管理员绝对是最好的选择!基于你的问题,我认为他们可能会反对它。 (我仍然建议在安装pip后使用virtualenvs,这可能也可以作为你的另一个问题的解决方案)。
-
这应该是python setup.py install --user。请参阅pythonhosted.org/setuptools/easy_install.html#id37
-
这也适用于easy_install
您可以通过virtualenv包创建虚拟环境。
这将创建一个文件夹(例如venv),其中包含Python可执行文件的新副本和新的site-packages目录,您可以在其中"安装"任意数量的包,而无需任何类型的管理访问。因此,通过source venv/bin/activate激活环境将为Python提供一个相当于安装这些软件包的环境。
我知道这适用于SGE集群,但虚拟环境的激活方式可能取决于集群的配置。
您可以尝试使用以下步骤在您自己的site-packages目录中的群集上安装virtualenv:
从这里下载virtualenv,把它放在你的集群上
使用setup.py将其安装到特定的本地目录以充当您自己的站点包:
1 2
| python setup.py build
python setup.py install --install-base /path/to/local-site-packages |
将该目录添加到PYTHONPATH:
1
| export PYTHONPATH="/path/to/local-site-packages:${PYTHONPATH}" |
创建一个virtualenv:
-
谢谢!如何在没有sudo或pip或easy_install的情况下安装virtualenv?
-
@Skyler:你可以在你有控制权的系统上安装virtualenv,在那里创建virtualenv,然后将文件传输到集群(除非我弄错了,我可能,你甚至不需要< x0>激活环境,仅创建环境 - 使用bash脚本激活环境)。但是,仅当您创建virtualenv的系统与群集具有相同的操作系统和体系结构时才有效 - 您可能需要进行大量自定义。
-
听起来不错。我会尝试一下。谢谢!
-
@Skyler:再想一想,在本地站点包目录中安装virtualenv可能更容易(基本上可以根据你的工作情况自行启动)。在我的编辑中尝试这种方法(我还没有测试过,所以让我知道你在路上遇到了什么问题)。
-
嗨大卫,第2步给出error: install-base or install-platbase supplied, but installation scheme is incomplete。我错过了什么?
-
您还可以安装virtualenvwrapper软件包,它将安装一些新命令,您可以使用mkvirtualenv envname创建virtualenvs,它会自动为您激活它。 doughellmann.com/projects/virtualenvwrapper
-
@Skyler:抱歉 - 尝试用--home替换--install-base
-
@DavidRobinson BTW,已经为集群提供了一些依赖项。我想通过克隆当前的本地环境来创建virtualenv,这样我就不必再次安装它们了。可能吗?我发布了另一个问题:stackoverflow.com/questions/14185288/
-
@Skyler:除非你使用--no-site-packages选项,否则virtualenv已经"继承"了默认情况下安装在整个系统上的所有软件包和依赖项。 (在您的计算机上试用)。
-
@DavidRobinson它是以"复制"的方式继承吗?如果将来外部环境发生变化怎么办? P.S。:--home有效。在步骤4之前,还应将本地路径添加到PATH,以便virtualenv命令可以运行。
-
@Skyler:我不是100%肯定,但我认为它会复制它们。
-
@DavidRobinson我会尝试一下。非常感谢你!
-
对我来说,这适用于:"python setup.py install --prefix = "这将virtualenv的脚本安装到 / bin,包转到 /lib/python2.7/site-packages原因,使用--home而不是--prefix将包放入 / lib / python / site-packages(没有python版本号!)
Python Distribution Anaconda解决了这个问题中讨论的许多问题。 Anaconda不需要管理员或root访问权限,并且可以安装到您的主目录。 Anaconda附带了许多有问题的软件包(scipy,numpy,sklearn等等)以及conda安装程序,如果需要额外的软件包,还需要安装额外的软件包。
它可以从https://www.continuum.io/downloads下载
您可以通过调用以下方法从任意路径导入模块:
sys.path.append()