Я пытаюсь вызвать скрипт Python 2.7 из Iron Python, используя subprocess.call
. вызванный процесс использует импорт, который не поддерживается в IronPython, например scikit-learn
и requests
.
В настоящее время я пытаюсь вызвать скрипт Python 2.7 с помощью этой команды:
sub_ret_val = subprocess.call("C:/Documents and Settings/avishay/workspace/BursaProject_V1_31/brainManager_toFile.py", shell = True, stderr = subprocess.STDOUT)
но я получаю:
LookupError: неизвестная кодировка: idna
теперь этот скрипт отлично работает, если я запускаю его из оболочки Windows или из среды eclipse pydev. в чем разница между запуском из оболочки и запуском из subprocess.call
, что приводит к сбою??
Спасибо
---РЕДАКТИРОВАТЬ---
Кажется, я тоже не могу импортировать encodings.idna:
ImportError: Нет модуля с именем idna
что очень-очень странно... печать sys.path
показывает, что c:\\Python27\\Lib
есть, а файл idna.py находится в каталоге кодировок... как может не работать импорт???
--- ЕЩЕ ОДНА РЕДАКТИРОВАТЬ ---
Я нашел один способ обойти проблему - запустить скрипт IronPython из оболочки python - и все работает нормально. Я до сих пор понятия не имею, почему вызов интерпретатора python 2.7 из IronPython мешает внутренним модулям python 2.7... PYTHONPATH включает путь к этим модулям, поэтому я был бы очень признателен за любое понимание того, что происходит под капотом.
print u'abc'.encode('idna')
в файлchild.py
и вызовите его изparent.py
:import subprocess; subprocess.call([r'c:\Python27\python.exe', 'child.py'])
. Сначала запуститеparent.py
с помощью CPython (чтобы убедиться, что он работает должным образом), затем запуститеparent.py
с помощью IronPython и посмотрите, воспроизводит ли он проблему. - person jfs   schedule 25.04.2013parent.py
с IronPython... - person WeaselFox   schedule 26.04.2013