web-dev-qa-db-ja.com

Python dateutil.relativedeltaが見つかりません

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は、仮想環境のサイトパッケージではなく、デフォルトのディレクトリにライブラリをインストールします。

32
JackalopeZero

私もこの問題にぶつかりました。最終的に使用した簡単な解決策は、コマンドの最後に--upgradeを追加することでした。 pythonはインストールされていると考えていたにもかかわらず、インストールを強制しました。これにより問題が解決しました。

したがって、この問題がある場合は、次を試してください。

Sudo pip install python-dateutil --upgrade

おそらく何も傷つけることはないので、強制的に再インストールするだけで害はありません。

57
Jon

私は同様の問題を抱えていましたが、より簡単な理由がありました。私の新しいvirtualenvにはdateutilがインストールされていなかっただけで、Pythonパッケージ名がわかりませんでした。pip install dateutil。パッケージ名が間違っていたため、明らかに機能しませんでした。ランニング pip install python-dateutil代わりに機能しました(Sudoに頼らずに)。

4
david.libremone

これは、パッケージのインストールの問題のように見えます。頭に浮かぶトラブルシューティングリスト:

  1. パッケージをインストールしたことを確認します。
  2. インストールされている場合、ファイルが正しいディレクトリ(pythonインタプリタ(= PYTHONPATHの有用な記事 here )からアクセス可能なディレクトリ)に保存されていることを確認します。
  3. それらのファイルの許可を確認してください。
  4. そこでインポートを試みた場合は、シェルを再起動します。
  5. コンピューターを再起動します(痛い...私はGNU/Linuxを使用して10年ですが、Windowsの悪い記憶に苦しんでいます!;)

HTH(少なくとも少し!)。

1
mac

これはかなり古いスレッドなので、後世のためにこれを入れます(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パッケージをスキップして新しいパッケージにアクセスできるようにします。

1
Sujit Pal