我正在使用numpy
// 在 Mac OS X 上做一些研究计算scipy
。pynest
为了性能,我们从我们大学租用了一个 400 节点的集群(使用 Linux),以便可以并行完成任务。问题是我们不允许在集群上安装任何额外的包(没有sudo
或任何安装工具),它们只提供原始 python 本身。
那么如何在集群上运行我的脚本呢?有什么方法可以集成模块(我认为 numpy 和 scipy 也有一些已编译的二进制文件),以便可以在不安装包的情况下解释和执行它?
我正在使用numpy
// 在 Mac OS X 上做一些研究计算scipy
。pynest
为了性能,我们从我们大学租用了一个 400 节点的集群(使用 Linux),以便可以并行完成任务。问题是我们不允许在集群上安装任何额外的包(没有sudo
或任何安装工具),它们只提供原始 python 本身。
那么如何在集群上运行我的脚本呢?有什么方法可以集成模块(我认为 numpy 和 scipy 也有一些已编译的二进制文件),以便可以在不安装包的情况下解释和执行它?
You don't need root privileges to install packages in your home directory. You can do that with a command such as
pip install --user numpy
or from source
python setup.py install --user
See https://stackoverflow.com/a/7143496/284795
The first alternative is much more convenient, so if the server doesn't have pip
or easy_install
, you should politely ask the admins to add it, explaining the benefit to them (they won't be bothered anymore by requests for individual packages).
您可以通过virtualenv包创建一个虚拟环境。
这将创建一个文件夹(例如venv
),其中包含 Python 可执行文件的新副本和一个新site-packages
目录,您可以在其中“安装”任意数量的包,而根本不需要任何类型的管理访问权限。因此,通过激活环境source venv/bin/activate
将为 Python 提供一个相当于安装了这些包的环境。
我知道这适用于 SGE 集群,尽管激活虚拟环境的方式可能取决于集群的配置。
您可以尝试virtualenv
使用以下步骤在您自己的站点包目录中的集群上安装:
从这里下载 virtualenv ,把它放到你的集群上
将其安装setup.py
到特定的本地目录以用作您自己的站点包:
python setup.py build
python setup.py install --install-base /path/to/local-site-packages
将该目录添加到您的 PYTHONPATH:
export PYTHONPATH="/path/to/local-site-packages:${PYTHONPATH}"
创建一个虚拟环境:
virtualenv venv
您可以通过调用从任意路径导入模块:
sys.path.append()
Python Distribution Anaconda 解决了这个问题中讨论的许多问题。Anaconda 不需要管理员或 root 访问权限,并且能够安装到您的主目录。Anaconda 附带了许多有问题的软件包(scipy、numpy、sklearn 等)以及 conda 安装程序,用于在需要其他软件包时安装其他软件包。