簡體   English   中英

Eclipse使用多個Python解釋器和execnet

[英]Eclipse using multiple Python interpreters with execnet

我正在使用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 Interpreter: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)

我得到以下輸出:

可以在eclipse_output.txt與terminal_output.pdf中找到文件的FileMerge比較。

任何提示? 謝謝

似乎pydev做了網站自定義,特別修改了交互/控制台使用的東西(從http://github.com/aptana/Pydev/blob/master/plugins/org.python.pydev/pysrc/的快速瀏覽中判斷pydev_sitecustomize / sitecustomize.py )。 這對execnet介導的過程沒有用或不合適。

您可以在調用execnet.makegateway之前嘗試“del os.environ ['PYTHONPATH']”,或者,為了更加小心,只需刪除sitecustomize部分。

霍爾格

'import site' failed; use -v for traceback

我已經看到當python無法找到它的里程碑時。 這表明存在PYTHONHOME問題。

查看http://docs.python.org/using/cmdline.html#envvar-PYTHONHOME也許eclipse正在搞砸你的環境。

編輯:

看看你的env轉儲,看起來eclipse肯定會搞亂PYTHONPATH,這會導致你的孩子python進程無法正常工作。 基本上你在這里發生的是eclipse啟動一個python v2實例,其中PYTHONPATH指向python v2目錄。 然后你產生一個python v3進程,試圖從python v2目錄加載它的地標...
你需要找到一種讓日食不會與PYTHONPATH混淆的方法。 我不確定eclipse正在嘗試做什么,但是當你想要生成新的python進程時它肯定不是朋友。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM