我有一个使用Scientific Linux的计算群集的帐户。当然,我只有用户访问权限。我正在使用python,我需要运行python脚本,所以我需要导入一些python模块。由于我没有root访问权限,我在我的$ HOME上安装了一个本地python副本以及所有必需的模块。当我在我的帐户(托管节点)上运行脚本时,它们运行正常。但为了将作业提交到计算队列(在更快的机器上处理),我需要提交一个包含执行脚本的行的bash脚本。计算群集使用SunGrid引擎。但是,当我提交bash脚本时,出现错误,我找不到安装的模块!我无法弄清楚什么是错的。我希望你能帮忙。通过计算群集加载python模块
回答
首先,该解决方案是否适用于您取决于群集的设置方式。这就是说,你的问题的一般解决方案如下。如果计算集群可以像访问主目录一样访问相同的文件,我没有看到为什么这种方式无效。
您需要使用virtualenv。在你的virtualenv中安装你的软件以及你需要的任何额外的python软件包。然后在批量bash脚本中,提供该virtualenv内的python解释器的完整路径。
注意:要在virtualenv中安装python软件包,您需要使用virtualenv中的pip实例,而不是系统pip。
例子:
$ virtualenv foo
$ cd foo
$ ./bin/pip install numpy
在bash脚本然后:
/path/to/foo/bin/python /path/to/your/script.py
我刚刚创建了一个运行'哪个python'的bash脚本,我注意到输出不是我的python副本。但是当我在我的ssh帐户上运行“哪个python”时,我得到了我的副本。 –
尝试执行我建议的操作 - 您将提供您自己的python副本以供群集运行。严肃地说,就是和运行集群的人交谈。我可以清楚地不知道他们是如何设置的,显然你也不知道。与他们交谈将成为您解决问题的最快途径。 – EEAA
你可以简单地从bash脚本的东西,如打电话给你的Python程序:PYTHONPATH=$HOME/lib/python /path/to/my/python my_python_script
我不了解SunGrid的工作原理,但如果它使用的用户不是您的用户,则需要对您的$HOME
进行全局读取。或者至少到Python库。
- 1. 通过计算集群加载python模块
- 2. Python:通过名称加载模块
- 3. 集群计算
- 4. 通过GDB加载模块
- 5. 计算机集群中的python库
- 6. Node.js集群模块
- 7. 使用多处理模块进行集群计算
- 8. 计算通过jquery加载的值
- 9. SQL集团通过计算
- 10. Apache Ignite计算群集
- 11. F#+ MPI + MONO:集群计算
- 12. OpenLayers群集重新计算
- 13. 通过Python连接到Cloudera集群
- 14. 通过JSPM加载(自定义)模块
- 15. Karma如何通过id加载模块?
- 16. 通过requirejs自动加载模块
- 17. 通过.NET代码加载Powershell模块
- 18. 通过SOM集群
- 19. 共享与群集模块
- 20. 模块集群和JMS
- 21. Node.js - 核心群集模块
- 22. 重装Python模块时,其通过加载“从pymod进口*”
- 23. 通过systemd运行Python脚本无法加载模块
- 24. 在哈希集中计算集群
- 25. 无法加载Python模块
- 26. 重新加载Python模块
- 27. 动态加载python模块
- 28. 通过码头群组模式部署火花群集
- 29. 集群系统上的Java并行处理(集群计算)
- 30. 所有群集计算库是否与星群集兼容?
顺便说一句 - 这是一个软件开发问题,而不是系统管理问题。因此,我已投票将此迁移到StackOverflow。另外,如果您对如何在集群上运行事情有疑问,那么询问运行集群的人员似乎是合适的。 – EEAA