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. python.exe の代わりに calc.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 を起動するだけで、例外を複製することができました。したがって、Python を開く Jython スクリプトを実行するには、PYTHONPATH がどうあるべきかを理解する必要があります。

4

1 に答える 1

0

結局、問題は PYTHONPATH に関係していました。このパスのどのエントリが Python の破損の原因だったのかはわかりませんが、Python で -E オプションを使用するようにコードを変更し (すべての環境変数を無視)、問題を修正しました。

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