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
私がこれまでに試したことには、
python.exe の代わりに calc.exe を開きます。calc.exe を置き換えたとき、例外は発生せず、calc.exe が開きました。
subp = subprocess.Popen('calc.exe')
WindowsコマンドプロンプトからJythonを起動して、Eclipseの外部で元のコードを実行しようとしました。この方法でコードを実行すると、python プロセスが開かれ、エラーは発生しませんでした。
更新: この問題は、「不適切な」PYTHONPATH を使用して python.exe を起動しようとしたことが原因であることがわかりました。上で述べたように、私は Eclipse で Jython インタープリターを使用してコードを実行しており、Eclipse は PYTHONPATH を管理しています。Eclipse によって提供された PYTHONPATH をシステムの PYTHONPATH にコピーし、python.exe を起動するだけで、例外を複製することができました。したがって、Python を開く Jython スクリプトを実行するには、PYTHONPATH がどうあるべきかを理解する必要があります。