問題タブ [python-import]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python - インポート エラー
やってはいけないことをして、途中でテストを実行せずに 4 つのモジュール (6 時間ほど) を書きました。
called内にメソッドがあり、/mydir/__init__.py
calledget_hash()
内にクラスがあります。/mydir/utils.py
SpamClass
/mydir/utils.py
から輸入get_hash()
し/mydir/__init__
ます。
/mydir/__init__.py
から輸入SpamClass
し/mydir/utils.py
ます。
クラスとメソッドの両方が単独で正常に動作しますが、何らかの理由で をインポートしようとすると、 from/mydir/
というインポート エラーが発生します。"Cannot import name get_hash"
/mydir/__init__.py
唯一のスタック トレースは、__init__.py
importedという行SpamClass
です。SpamClass
次の行は、インポートしようとしたときにエラーが発生した場所get_hash
です。どうしてこれなの?
python - Pythonの__import__がfromlistを必要とするのはなぜですか?
Pythonでは、プログラムでモジュールをインポートする場合は、次の操作を実行できます。
サブモジュールをインポートする場合は、次のような単純な問題だと思います。
もちろん、これは機能しません。あなたはただmodule_name
再び得る。あなたはしなければならない:
なんで?fromlist
空でない限り、の実際の値はまったく重要ではないようです。引数を要求し、その値を無視することのポイントは何ですか?
Pythonのほとんどの作業は正当な理由で行われているようですが、私の人生では、この動作が存在するための合理的な説明を思い付くことができません。
python - `importos.path`または`importos`を使用する必要がありますか?
公式ドキュメントによると、os.path
はモジュールです。したがって、それをインポートするための好ましい方法は何ですか?
または...
os
「私のために作品をインポートする」と答えないでください。私は知っています、それは今私にとってもうまくいきます(Python2.6の時点で)。私が知りたいのは、この問題に関する公式の推奨事項です。したがって、この質問に答える場合は、参考文献を投稿してください。
python - Python がインポートされたモジュールをキャッシュしないようにする
IPython を使用して Python で大規模なプロジェクト (複数のファイルとフォルダーに分割) を開発しているときに、インポートされたモジュールのキャッシュの問題に遭遇しました。
問題は、そのモジュールが変更された場合でも、命令import module
がモジュールを一度しか読み取らないことです! そのため、パッケージ内の何かを変更するたびに、IPython を終了して再起動する必要があります。痛い。
一部のモジュールを適切に強制的にリロードする方法はありますか? または、Python がそれらをキャッシュしないようにする方がよいでしょうか?
いくつかのアプローチを試しましたが、どれもうまくいきません。特に、一部のモジュールや変数が不思議なことに等しくなるなど、本当に、本当に奇妙なバグに遭遇しNone
ます...
私が見つけた唯一の賢明なリソースはReloading Python modules、 from pyunit ですが、チェックしていません。私はそのようなものが欲しいです。
IPython を再起動するか、何らかの方法で Python インタープリターを再起動することをお勧めします。
では、Python で開発している場合、この問題に対してどのような解決策を見つけましたか?
編集
明確にするために: 明らかに、モジュールの以前の状態に依存するいくつかの古い変数が残っている可能性があることは理解しています。それは私には問題ありません。奇妙なエラーが発生することなくモジュールを強制的にリロードすることが Python で非常に難しいのはなぜですか?
より具体的には、モジュール全体が1 つのファイルmodule.py
にある場合、次のようにするとうまくいきます。
このコードは美しく機能し、IPython を何ヶ月もやめることなく開発できます。
ただし、モジュールが複数のサブモジュールで構成されている場合は常に、地獄が解き放たれます。
モジュールが 1 つの大きなファイルにあるのか、複数のサブモジュールにあるのかによって、Python でこれほど異なるのはなぜですか? なぜそのアプローチがうまくいかないのでしょうか??
python - 相対インポートの悪夢、pep 366 はどのように機能しますか?
私はそのような「標準的なファイル構造」を持っています(読みやすくするために賢明な名前を付けています):
この構造では、たとえば、各パッケージに含まれるモジュールはhelpers
、次のような相対インポートを介してユーティリティにアクセスすることができます。
__main__.py
プログラムは、次の方法でファイルを使用して「スクリプトとして」実行されます。
私がこれらの行に入れたPEP 366に従おうとしています:__main__.py
しかし、実行時:
どうしたの?相対インポートを処理して効果的に使用する正しい方法は何ですか?
現在のディレクトリを PYTHONPATH に追加しようとしましたが、何も変わりません。
python - Pythonの鼻のインポートエラー
ファイル構造内のテストスクリプトの下にあるモジュールを認識させるために、 noseテストフレームワークを取得できないようです。問題を示す最も簡単な例を設定しました。以下に説明します。
パッケージファイルの構造は次のとおりです。
foo.pyに含まれるもの:
tests /test_foo.pyに含まれるもの:
両方のinit.pyファイルが空です
nosetests -vv
メインディレクトリ(foo.pyがある場所)で実行すると、次のようになります。
tests /ディレクトリ内から実行すると、同じエラーが発生します。ドキュメントと私が見つけた例によると、noseはすべての親パッケージをパスとそれが呼び出されるディレクトリに追加することになっていますが、私の場合はそうではないようです。
Python2.6.2でUbuntu8.04を実行しています。それが重要な場合は、手動で(setup_toolsではなく)noseを構築してインストールしました。
python - Python では、関数内でインポートするとどうなりますか?
速度とメモリの効率に関して、関数内に Python モジュールおよび/または関数をインポートすることの長所と短所は何ですか?
関数が実行されるたびに再インポートしますか、それとも関数が実行されるかどうかに関係なく最初に一度だけですか?
python - Python インポート エラー: モジュール名がありません
私はPythonで非常に新しいです。YYY
pathにスクリプトを含む既存のサンプル プロジェクトと、これらを 1 つずつ呼び出すXXX/YYY
スクリプトがあります。A.py
ZZZ.py
スクリプトにスクリプトを追加して、YYY
スクリプトを呼び出したいだけです。このスクリプトを同じパス ( XXX/ZZZ.py
) に追加し、 にインポートしてA.py
呼び出します。
しかし、私はこのエラーが発生しました:
私は疑問に思います:違いは何ですか?PythonXXX/YYY
が py ファイルをインポートできるのに、このエラーを返すのはなぜZZZ.py
ですか?
python - Python - 複雑なディレクトリ構造で PYTHONPATH を使用する方法は?
次のファイル\ディレクトリ構造を検討してください。
bar1.pyとbar2.pyを使用できるようにするには、 foo.pyでsys.path.appendをどのように使用すればよいですか? インポート
はどのようになりますか?
python - celery-djangoが設定を見つけることができません
非同期タスクを実行するためにCeleryを使用するDjangoプロジェクトがあります。私はWindowsXPマシンで開発を行っています。
Djangoサーバー(python manage.py runserver 80
)の起動は正常に機能しますが、Celery Daemon(python manage.py celeryd start
)を起動しようとすると、次のエラーで失敗します。
ImportError:設定をインポートできませんでした'src.settings'(sys.pathにありますか?構文エラーがありますか?):src.settingsという名前のモジュールがありません
sys.pathには「C:\ development \ SpaceCorps \ src」が含まれているため、このモジュールが見つからない理由がわかりません。
デーモンの起動からの完全な出力は次のとおりです。