paster serve
を使用してプログラムを実行しようとしていますが、エラーが発生し続けます。
ImportError: No module named dateutil.relativedelta
私はpythonバージョン2.6.7およびdateutil
バージョン1.5を実行していますので、インストールする必要があります。
なぜこれが起こるのかについてのアイデアはありますか?
を使用してインポートしています
from dateutil.relativedelta import *
私が検索するとパッケージを見ることができます:
/usr/lib/python2.7/site-packages/dateutil/relativedelta.pyc
/usr/lib/python2.7/site-packages/dateutil/relativedelta.py
/usr/lib/python2.7/site-packages/dateutil/relativedelta.pyo
したがって、この投稿は数か月前になり、人気のある質問のバッジを獲得しました。少し質問して、この質問に適切な回答ができるかどうかを確認する価値があると思いました。
すぐにこれを見て、dateutil
がpython2.7にのみインストールされていることを確認しました。
Sudo yum install python-dateutil
Sudo
はデフォルトのPythonバージョン(2.6.4ではなくPython2.7)に切り替えられます)
これを解決するには、次のように簡単でした。
su
(switch to virtual environment)
yum install python-dateutil
su
を使用してから仮想環境に切り替えると、rootアクセスが許可され、仮想pythonディレクトリにインストールされます。Sudo
は、仮想環境のサイトパッケージではなく、デフォルトのディレクトリにライブラリをインストールします。
私もこの問題にぶつかりました。最終的に使用した簡単な解決策は、コマンドの最後に--upgradeを追加することでした。 pythonはインストールされていると考えていたにもかかわらず、インストールを強制しました。これにより問題が解決しました。
したがって、この問題がある場合は、次を試してください。
Sudo pip install python-dateutil --upgrade
おそらく何も傷つけることはないので、強制的に再インストールするだけで害はありません。
私は同様の問題を抱えていましたが、より簡単な理由がありました。私の新しいvirtualenvにはdateutilがインストールされていなかっただけで、Pythonパッケージ名がわかりませんでした。pip install dateutil
。パッケージ名が間違っていたため、明らかに機能しませんでした。ランニング pip install python-dateutil
代わりに機能しました(Sudo
に頼らずに)。
これは、パッケージのインストールの問題のように見えます。頭に浮かぶトラブルシューティングリスト:
HTH(少なくとも少し!)。
これはかなり古いスレッドなので、後世のためにこれを入れます(python-dateutilのインストールに関する以前のコメントは私を助けてくれたので、おそらく私のコメントは他の人を助けます)。
Mac OS(Snow Leopard、他のバージョンについては不明)の場合、dateutilsパッケージはデフォルトで次の場所にあります。
/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/dateutil
一方、pip installはパッケージを以下に書き出します。
/Library/Python/2.6/site-packages
/Library/Python/2.6/site-packages/easy-install.pthファイルは更新しません。その結果、dateutilをインポートするときに古い場所を指すことになりますが、これは「import dateutil; dateutil.__file__
」で確認できます。
そのため、私がしたこと(おそらくより良い方法が利用可能です)は、古いディレクトリ(/System/Library/.../dateutil
)の名前をdateutil.obsolete
に変更し、Pythonを再起動してから、同じコマンドセットを再度実行しました。これはパスファイルやsys.path
には何もしませんが、古いdateutilsパッケージをスキップして新しいパッケージにアクセスできるようにします。