Я пытаюсь отправить задание через qsub myScript.sh -cwd
, где скрипт оболочки запускает скрипт Python-2.7, myPython.py
.qsub и python импортирует .py модули, но возвращает ImportError для .pyf
# myScript.sh
python2.7 myPython.py
Теперь myPython.py
потребности импортировать пакет Python, который хранится в моем локальном каталоге, так что сценарий начинается с
# myPython.py
import sys
sys.path.append('/file/path/for/package')
import package
После отправки задания в файл журнала содержит следующий вывод Python:
ImportError: No module named problem_c
Эта ошибка возникает после того, как несколько модулей были импортированы из *.py
файлов без возврата ошибок, поэтому я метрономы что это не проблема с этим путем. Единственное различие, которое я нахожу, состоит в том, что файл problem_c
заканчивается на .pyf
(т. Е. problem_c.pyf
). Он хранится в том же каталоге, что и модули, заканчивающиеся на .py
.
Когда я запускаю сценарий локально, как python2.7 myPython.py
, эта ошибка не возникает при загрузке пакета. Тем не менее, задание слишком интенсивно для заполнения памяти, не отправив его в очередь. Почему модули, написанные как файлы .pyf
обрабатываются по-разному, когда я использую qsub
, и как их импортировать в этом случае?
(если это имеет значение, кластер я работаю был создан с Sun Grid Engine.)
Спасибо за ваши мысли.
Является ли файл '.pyf'' pyfort' (Fortran in Python)? Если да, у вас есть «pyfort», установленный на вашей локальной машине, но не на кластерных машинах? – dg99
не должно быть 'sys.path.append (0, '/ file/path/for/package')'? – tobspr
@TobSpr Я получаю сообщение об ошибке: 'sys.path.append' принимает только 1 аргумент, когда я пытаюсь это сделать. – biostdave