1

UPDATE 10 秒後
JF と Gauden のおかげで適切に修正されました。

更新
他の作業ファイルがあるディレクトリにIDLEファイルを保存することで、一時的な修正を見つけました(可能であれば、完全に修正する方法を知りたいです。)

これは恒久的な修正ではないため、ファイルが保存されている場所ならどこでも機能するように試してみたい場合は、お気軽に。

これはpythonファイルの始まりです:

#!/usr/bin/python
# -*- coding: utf-8  -*-
import wikipedia
import pagegenerators
import sys
import re
import pywikibot
from pywikibot import *

(お気づきかもしれませんが、これは pywikipedia スクリプトですが、それは無関係だと思います)

このファイルは、コマンド ラインから正常に実行されます。

ただし、IDLE を使用してスクリプトを開発しようとしたり、IDLE インタープリターを使用しようとすると、エラーが発生します。

>>> import wikipedia

Traceback (most recent call last):
  File "<pyshell#9>", line 1, in <module>
    import wikipedia
ImportError: No module named wikipedia

なぜ機能しないのか、まったくわかりません。

私もこれを試しました:

>>> imp.find_module("wikipedia.py","f:/ake/pa/th/")

Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    imp.find_module("wikipedia.py","f:/ake/pa/th/")
ImportError: No frozen submodule named f:/ake/pa/th/.wikipedia.py

.エラー ログに示されているパスは、wikipedia.py ファイルへの正しいパスですwikipedia.py

次に、へのパスを追加しようとしましたsys.pathが、それも機能しませんでした:

>>> import sys
>>> sys.path.append("c/users/adam/py")
#the same error...

モジュールへのパス: `c:\users\joe_bloggs\py\wikipedia.pyc

Python 実行可能ファイル:コマンド ライン: C:\Python27\python.exe、IDLE:C:\Python27\pythonw.exe

PYTHONPATHは、両方でスローします。

Traceback (most recent call last):
  File "<pyshell#20>", line 1, in <module>
    print os.environ['PYTHONPATH'].split(os.pathsep)
  File "C:\Python27\lib\os.py", line 423, in __getitem__
    return self.data[key.upper()]
KeyError: 'PYTHONPATH'

OS: Windows7

Python バージョン: 2.7.2

新しい PATH : IDLE、およびコマンド ライン:

C:\Program Files\Common Files\Microsoft Shared\Windows Live
C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live
C://Python27
C:\Program Files (x86)\IVI Foundation\VISA\WinNT\Bin
C:\Program Files (x86)\QuickTime\QTSystem\
C:\Program Files (x86)\Windows Live\Shared
4

2 に答える 2

2

編集上記の質問に対する答えはかなり単純であることが判明しましたが、将来の参考のために可能なトラブルシューティングチェックリストとして、また将来この種の質問を準備する必要があるかもしれない他の人のためのチェックリストとして、この回答を編集しています.

手がかり 1: インポートしているモジュールへのパスは何ですか?

>>> import wikipedia
>>> print wikipedia.__file__

これにより、コンパイルされたモジュールへのパスが得られ、1 つの手がかりになります。

手がかり 2: Python 実行可能ファイルへのパスは?

この質問も参照してください)。

>>> import sys
>>> print sys.executable

これをシェルと IDLE スクリプトで試してください。2 つの結果が異なる場合は、2 つの Python インタープリターを使用しており、そのうちの 1 つだけがwikipediaモジュールを指すパスを持っています。

手がかり 3: とは何sys.pathですか?

また、これをシェルと IDLE のスクリプトの両方で繰り返します。

>>> print '\n'.join( sys.path )

sys.path.append("d:/irectory/folder/is/in")( を使用してその場所を に追加できる場合がありますsys.path。これにより、Python がモジュールを探す場所のリストにそのディレクトリが追加されます。)

手がかり 4: PYTHONPATH とは何ですか? 2 つの環境で違いはありますか?

この回答も参照してください)。

最後に、これをシェルと IDLE のスクリプトの両方で繰り返します。

>>> import os
>>> print '\n'.join( os.environ['PATH'].split(os.pathsep) )

2 つの結果 (シェルと IDLE から) に再び注目し、2 つの環境で PYTHONPATH に違いがあるかどうかを確認します。

これらのすべてのテストが決定的でないことが判明した場合は、特定のさらなる手がかりを得るのに役立つので、この情報をできるだけ多く質問に追加します. また、使用している OS と取得したトレースバックを追加します。

于 2012-05-27T09:23:30.863 に答える
0

Raspberry Pi に新しくインストールしたライブラリをインポートしようとしたときに、同じ問題が発生しました。すべての指示に従ってライブラリ ( Adafruit RHT Sensor ) をインストールしたところ、端末から正常に動作しました。ただし、IDLE 内から動作させることはできませんでした。

問題は、Raspberry Pi に Python 2 と 3 の両方がインストールされていることであることが判明しました。私が行ったインストール (「python」コマンドを使用) は Python 2 にのみ適用されました。Python 3 用にインストールするには、「python3」コマンドを使用して別のインストールを実行する必要がありました。その後、IDLE を再起動すると、すべて正常に動作しました。

sys 実行可能パスを出力するという上記の提案は、矛盾を指摘するのに役立ちました。

import sys
print sys.executable
于 2016-08-21T15:03:07.577 に答える