我正在Mac OS X上使用numpy/scipy/pynest进行一些研究计算。为了提高性能,我们租用了一个400节点的Linux集群,以实现并行处理任务。问题是我们不被允许在集群上安装任何额外的软件包(没有sudo或其他安装工具),他们只提供了原始的Python环境。那么我该如何在集群上运行我的脚本呢?是否有办法将这些模块整合起来(numpy和scipy也有一些编译的二进制文件)以便在没有安装软件包的情况下解释和执行代码呢?
在您的主目录中安装软件包时,不需要root权限。 您可以使用以下命令完成此操作:
pip install --user numpy
或者从源代码编译
python setup.py install --user
pip
或easy_install
,您应该礼貌地要求管理员添加它,并向他们解释其好处(他们将不再受到个别软件包请求的困扰)。python setup.py install --user
。请参见 https://pythonhosted.org/setuptools/easy_install.html#id37 - Piotr Dobrogost通过virtualenv软件包,您可以创建虚拟环境。
它会创建一个文件夹(例如venv
),其中包含Python可执行文件的新副本和一个新的site-packages
目录,您可以在其中“安装”任意数量的软件包,而无需任何管理员访问权限。因此,通过 source venv/bin/activate
激活该环境将使Python具有等同于安装这些软件包的环境。
我知道这对SGE集群有效,虚拟环境的激活方式可能取决于您的集群配置。
您可以尝试使用以下步骤在自己的site-packages
目录中在集群上安装virtualenv
:
从这里下载virtualenv并将其放入您的集群中
使用setup.py
将其安装到特定的本地目录以用作您自己的site-packages:
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
virtualenv
,在那里创建虚拟环境,然后将文件传输到集群(除非我错了),你甚至不需要virtualenv
去激活环境,只需要创建即可 - 使用bash脚本激活环境。但是,这仅适用于您在创建虚拟环境的系统与集群的操作系统和架构相同的情况下-您可能需要进行大量定制。 - David Robinson你可以通过调用以下方式从任意路径导入模块:
sys.path.append()
import
调用它们。如果这是问题所在,并且你不能使用pip
或者easy_install
,你可以直接下载这些包并将其放置于Pythonsite-packages
中,然后通过import
导入它们。 - jdotjdotnumpy
和scipy
来说是正确的。但是你所说的“不能安装包”是什么意思?你具体不被允许安装或放置在集群上的是什么? - jdotjdotsudo
,也没有任何安装工具。 - Timothy