0

我正在使用带有 Jython2.7.0 解释器的 PyDev 插件。在我的代码中,我尝试执行以下代码:

import subprocess
subp = subprocess.Popen('C:\Python27\python.exe')

eclipse 控制台显示以下错误:

Traceback (most recent call last):
  File "C:\jython2.7.0\Lib\site.py", line 68, in <module>
    import os
  File "C:\jython2.7.0\Lib\os.py", line 432, in <module>
    import UserDict
  File "C:\jython2.7.0\Lib\UserDict.py", line 83, in <module>
    import _abcoll
  File "C:\jython2.7.0\Lib\_abcoll.py", line 11, in <module>
    from abc import ABCMeta, abstractmethod
  File "C:\jython2.7.0\Lib\abc.py", line 8, in <module>
    from _weakrefset import WeakSet
  File "C:\jython2.7.0\Lib\_weakrefset.py", line 5, in <module>
    from java.util import WeakHashMap
ImportError: No module named java.util

到目前为止我尝试过的事情包括

  1. 打开 calc.exe 而不是 python.exe。当我替换 calc.exe 时,我没有收到任何异常,并且 calc.exe 打开了:

    subp = subprocess.Popen('calc.exe')

  2. 尝试通过从 windows 命令提示符启动 Jython 在 eclipse 之外执行原始代码。当我以这种方式执行代码时,打开了一个 python 进程并且没有错误。

更新:我开始意识到这个问题源于尝试使用“坏”PYTHONPATH 启动 python.exe。正如我上面所说,我在 Eclipse 中使用 Jython 解释器运行代码,而 Eclipse 正在管理 PYTHONPATH。只需将 eclipse 提供的 PYTHONPATH 复制到我的系统 PYTHONPATH 并启动 python.exe,我就能够复制异常。所以现在我只需要弄清楚 PYTHONPATH 应该是什么才能运行打开 python 的 Jython 脚本。

4

1 回答 1

0

最后,问题与 PYTHONPATH 有关。我不确定此路径中的哪个条目导致 Python 中断,但我最终将代码更改为使用 Python 的 -E 选项(忽略所有环境变量)并解决了问题。

import subprocess
subp = subprocess.Popen('C:\Python27\python.exe -E')
于 2015-07-21T17:57:00.423 回答