mechanize をインストールした後、インポートできないようです。
私はこのリポジトリからpip、easy_install、そしてpython setup.py install
経由でインストールしてみました。 https://github.com/abielr/mechanize 。 Pythonインタラクティブに入るたびに、次のようになります。
Python 2.7.3 (default, Aug 1 2012, 05:14:39)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import mechanize
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named mechanize
>>>
以前に実行したインストールでは、それらが正常に完了したことが報告されたので、インポートが機能することを期待しています。このエラーの原因は何ですか?
私の場合は、許可問題です。パッケージはどういうわけかroot rwパーミッションだけでインストールされました、他のユーザはそれにrwできません!
私は同じ問題を抱えていました:import colorama
を含むスクリプトはImportErrorを投げていましたが、Sudo pip install colorama
は「package already installed」と言っていました。
私の修正:pip Sudoなし:pip install colorama
を実行してください。それからpipはそれがインストールされる必要があることに同意し、それをインストールし、そして私のスクリプトが走りました。
私の環境はUbuntu 14.04 32ビットです。私は私のvirtualenvを有効にする前後にこれを見たと思います。
UPDATE:さらに良いのはpython -m pip install <package>
を使うことです。これの利点は、あなたがパッケージを入れたい特定のバージョンのpythonを実行しているので、pipはパッケージを「正しい」pythonに明白にインストールすることです。この場合も、Sudoを使用しない...正しい場所にパッケージを取得しますが、(不要な)root権限を使用することもできます。
それはPythonパスの問題です。
私の場合は、Pythonを次の場所にインストールしています。
/Library/Frameworks/Python.framework/Versions/2.6/bin/python、
そしてpython2.6にはsite-packagesディレクトリはありません。
私がpipでインストールしたパッケージ(SOAPpy)は次の場所にあります。
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/
そしてsite-packageはpythonのパスに入っていません、私がしたことは恒久的にPYTHONPATHにsite-packagesを追加することです。
ポップアップ表示されるテキストファイルで、最後に次の行を追加します。
pYTHONPATH = $ PYTHONPATHをエクスポートします。
Pythonのインポートメカニズムは、実際にはうまくいきます。
若いヒップなインターンが秘密を "python setup.py install"することを私に言うまで、私は私のモニターに頭をぶつけてきましたモジュールディレクトリの中
何らかの理由で、そこからセットアップを実行しても動作します。
明確にするために、あなたのモジュールの名前が "foo"であれば:
[burnc7 (2016-06-21 15:28:49) git]# ls -l
total 1
drwxr-xr-x 7 root root 118 Jun 21 15:22 foo
[burnc7 (2016-06-21 15:28:51) git]# cd foo
[burnc7 (2016-06-21 15:28:53) foo]# ls -l
total 2
drwxr-xr-x 2 root root 93 Jun 21 15:23 foo
-rw-r--r-- 1 root root 416 May 31 12:26 setup.py
[burnc7 (2016-06-21 15:28:54) foo]# python setup.py install
<--snip-->
パスを呼び出して他のディレクトリからsetup.pyを実行しようとすると、インストールが中断されてしまいます。
動作しません:
python /root/foo/setup.py install
動作します:
cd /root/foo
python setup.py install
私はSudo pip install keyring
でインストールしたキーリングを使用しようとしているときにこれに遭遇しました。他の答えで述べたように、それは私の場合の許可の問題です。
私にとってうまくいったこと:
Sudo pip uninstall keyring
-H
オプションを使い、キーリングを再インストールしました:Sudo -H pip install keyring
お役に立てれば。
PYTHONPATHを正しく動作させることができませんでした。 export
を追加することで問題が解決したことに気付きました。
(働きました)
export PYTHONPATH=$PYTHONPATH:~/test/site-packages
vs.
(動作しませんでした)
PYTHONPATH=$PYTHONPATH:~/test/site-packages
私はこの問題を組み合わせた方法で修正することができました。最初に、私はクリスのアドバイスに従い、コマンドラインを開き、「pip show packagename」と入力しました。これはインストールされたパッケージの場所を提供しました。
次に、pythonを開き、 'import sys'と入力してから 'sys.path'と入力して、自分のpythonがインポートしたパッケージを検索する場所を表示します。残念ながら、最初のステップで表示された場所はリストにありませんでした。
最後のステップで、 'sys.path.append(' package_location_seen_in_step_1 ')と入力しました。場所がリストに表示されていることを確認するには、手順2を繰り返します。
テストステップで、もう一度パッケージをインポートしてみてください。
欠点は?これは一時的なもので、毎回リストに追加する必要があります。
私の場合はpip install Django==1.11
を実行しましたが、python
インタプリタからはインポートされません。
Pipのコマンドを拾い読みすると、pip show
が見つかりました。
> pip show Django
Name: Django
Version: 1.11
...
Location: /usr/lib/python3.4/site-packages
...
場所が「3.4」と言っていることに注意してください。 python
-コマンドがpython2.7
にリンクされていることがわかりました
/usr/bin> ls -l python
lrwxrwxrwx 1 root root 9 Mar 14 15:48 python -> python2.7
そのすぐ隣に私はpython3
というリンクを見つけたので、それを使いました。リンクをpython3.4
に変更することもできます。それもそれを修正します。
私の場合は、モジュールにinit。pyファイルがないため、Python 2.7環境にインポートしたいという問題がありました。
Python 3.3+には、init。pyファイルなしでパッケージを作成することを可能にする暗黙の名前空間パッケージがあります。
私はPythonが初めてです。プロジェクトインタプリタのパスを変更してこの問題を解決しました。File -> Settings -> Project -> Project Interpreter
私はこの正確な問題を抱えていましたが、上記の答えはどれもうまくいきませんでした。親プロジェクトからインポートした後にsys.pathが異なることに気付くまで、私は頭がおかしくなりました。プロジェクト階層にないファイルをインポートするために、importlibを使って小さな関数を書いていたことがわかりました。悪い考え:私はこれをしたことを忘れました。さらに悪いことに、インポートプロセスはsys.pathを不正に実行し、そのままにしました。 非常に悪い考えです。
解決策はそれを止めて、インポートするために必要なファイルをプロジェクトに入れることでした。ファイルは時々再構築する必要があるため、ファイルを独自のプロジェクトに入れるという方法もあります。この再構築はメインプロジェクトの再構築と一致する場合もあれば、一致しない場合もあります。
ちょっと話題が違うかもしれませんが、私はimport PyYAML
に問題がありました。 import yaml
が必要だと指摘します。 (それは古典的なrtfmだと思います...)
私のために働いたのは:
python -m pip install -user {package name}
このコマンドにはSudoは必要ありません。これはOSX Mojaveでテストされました。
Djangoを使っても同じような問題がありました。私の場合、Djangoシェルからモジュールをインポートできましたが、モジュールをインポートした.pyからはインポートできませんでした。
問題は、モジュールがインストールされていた別のvirtualenvからDjangoサーバーを(つまり.pyを実行して)実行していたことです。
代わりに、Shellインスタンスは正しいvirtualenvで実行されていました。だから、なぜそれがうまくいったのか。
この作品!
これは、モジュールが古いバージョンのpythonまたは別のディレクトリにインストールされている場合によく起こります。解決策は簡単なので心配ありません。 - モジュールがインストールされているディレクトリからモジュールをインポートします。これを行うには、まずpython sys
モジュールをインポートしてから、そのモジュールがインストールされているパスからインポートします。
import sys
sys.path.append("directory in which module is installed")
import <module_name>
上記の他の回答がうまくいかない場合は、pipキャッシュを削除してパッケージを再インストールしてみてください。私のマシンはUbuntu14.04を実行しており、~/.cache/pip
の下にありました。このフォルダを削除すると、私にとってはうまくいきませんでした。
考えられるケースのほとんどはすでにソリューションでカバーされており、私のケースを共有するだけで、ある環境にパッケージをインストールし(例:X
)、別の環境にパッケージをインポートしていました(例:Y
)。そのため、パッケージをインストールした環境からパッケージをインポートしていることを常に確認してください。
私は(Windows上で)同様の問題を抱えており、私の場合の根本的な原因はアンチウイルスソフトウェアでした!実行中のプロセスをある種の仮想マシンでラップする「自動封じ込め」機能があります。症状は以下のとおりです。pip install somemodule
が1つのcmd行のウィンドウで正常に機能し、import somemodule
が別のプロセスから実行されるとエラーで失敗する
ModuleNotFoundError: No module named 'somemodule'
私はそれが誰かに時間を節約することを願っています:)
Python-Telegram-Bot でテレグラムボットをテストしようとしている私のシステムにインストールされた2.7と3.5でこの問題がありました。
Pipとpip3を使って、Sudoを使っても使わなくてもインストールできなかった。私はいつも得た:
Traceback (most recent call last):
File "telegram.py", line 2, in <module>
from telegram.ext import Updater
File "$USER/telegram.py", line 2, in <module>
from telegram.ext import Updater
ImportError: No module named 'telegram.ext'; 'telegram' is not a package
エラーメッセージを正しく読むことで、pythonが現在のディレクトリでtelegram.py
を探していることがわかります。それに、そこにはtelegram.pyという名前のスクリプトがあり、これはimport
を呼び出すときにpythonによってロードされました。
結論、インポートしようとするとき、あなたの現在の作業ディレクトリにpackage.py
がないことを確認してください。 (そしてエラーメッセージをよく読んでください)。