Я использую пакет execnet , чтобы разрешить связь между скриптами Python, интерпретируемыми разными интерпретаторами Python.
Следующий код (test_execnet.py):
import execnet
for python_version in ('python', 'python3'):
try:
gw = execnet.makegateway("popen//python="+python_version)
ch = gw.remote_exec('channel.send(1/3)')
res = ch.receive()
print(python_version, ': ', res, sep ="")
except:
print('problems with ', python_version)
Прекрасно работает в терминале командной строки, показывая следующие выходные данные:
$ python3 test_execnet.py
python: 0
python3: 0.333333333333
Однако, если я пытаюсь запустить тот же код из Eclipse IDE, я получаю следующую ошибку:
'import site' failed; use -v for traceback
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "<string>", line 4, in <module>
File "<string>", line 2, in <module>
File "/Library/Frameworks/Python.framework/Versions/3.1/lib/python3.1/site-packages/execnet/gateway_base.py", line 8, in <module>
import sys, os, weakref
File "/Library/Frameworks/Python.framework/Versions/3.1/lib/python3.1/os.py", line 380, in <module>
from _abcoll import MutableMapping # Can't use collections (bootstrap)
File "/Library/Frameworks/Python.framework/Versions/3.1/lib/python3.1/_abcoll.py", line 54
class Hashable(metaclass=ABCMeta):
^
SyntaxError: invalid syntax
problems with python
problems with python3
ПРИМЕЧАНИЕ:
- Версия Eclipse: 3.6.0
- PyDev Интерпретатор, настроенный для проекта: python3
- "Предпочтения / Интерпретатор - Python"Интерпретаторы Python:
- python (/ usr / bin / python)
- python3 (/Library/Frameworks/Python.Framework/Versions/3.1/Resources/Python.app/Contents/MacOS/ Python
РЕДАКТИРОВАТЬ:
Я пишу код для отображения os.environ
, как это:
for python_version in ('python', 'python3'):
try:
import os
for item in os.environ:
print(item, '= ', os.environ[item])
except:
print('problems with ', python_version)
Я получил следующие выходные данные:
Сравнение файлов FileMerge можно найти по адресу eclipse_output.txt и Terminal_output.pdf .
Есть подсказки?Спасибо