2 つの Python パッケージがあり、一方を他方にインポートする必要があります。ディレクトリ構造は次のようになります。
workspace/
management/
__init__.py
handle_management.py
other_management.py
utils/
__init__.py
utils_dict.py
utils
ファイル内のプロジェクトから機能をインポートしようとしていhandle_management.py
ます:
import utils.utils_dict
実行しようとするとエラーが発生しますhandle_management.py
:
ImportError: No module named utils.utils_dict
この問題を解決する方法について多くのことを読みましたが、うまくいく解決策が見つからないようです。
相対パスからモジュールをインポートすることから始めました-該当する解決策を試しましたが、どれも機能しませんでした。
workspace/
経由で利用可能にする唯一の解決策はありますsite_packages
か? もしそうなら、これを行う最善の方法は何ですか?
編集:
に を追加しようとしましたが/home/rico/workspace/
、PYTHONPATH
うまくいきませんでした。
編集2:
私は klobucar のソリューションをうまく使用できましたが、このユーティリティは他のいくつかの開発者によって使用される予定であるため、一般的なソリューションとしては機能しないと思います。Python の一般化を使用して、各ユーザーの相対パスを特定できることはわかっています。もっとエレガントな解決策があるように感じます。
最終的に、このスクリプトは cron 経由で実行され、複数の Python プロジェクトで単体テストが実行されます。これは、開発中の統合テストを確実にするために、各開発者も利用できるようになります。
これをもっと一般化できるようにする必要があります。
編集3:
申し訳ありませんが、私が達成しようとしていることに対して、これらのソリューションはどれもあまり好きではありません。貴重なご意見に感謝いたします。一時的な修正として使用しています。site_packages
完全な修正として、ディレクトリに追加されるスクリプトを追加することを検討しますPYTHONPATH
。これは、複数のマシンと複数の開発者に必要なものです。
完全なソリューションを構築したら、私が行ったことをここに投稿し、ソリューションとしてマークします。
編集4:
この質問で自分のニーズをうまく表現できなかったように感じます。以下の回答は、この質問にうまく対処していますが、私の実際のニーズではありません。その結果、別の投稿で質問を再構成しました。私はこれを編集することを検討しましたが、以下の回答 (他の人にとって非常に役立つでしょう) は変更にとって意味がなく、場違いで無関係に見えるでしょう.
この質問の改訂版については、Python パッケージをユニバーサルにインポートできないを参照してください。