問題タブ [python-module]
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のプロパティを使用すると、次のようにすることができます
値を返すだけでなく、関数を呼び出します。
モジュールでこれを行う方法はありますか? 欲しいケースがある
そこに格納されている値を返すだけでなく、関数を呼び出す。
python - 相対モジュールをインポートするpython
同じディレクトリに Python モジュール a.py と b.py があります。a.py が別のディレクトリからインポートされたか、直接実行された可能性がある場合、a.py から b.py を確実にインポートするにはどうすればよいですか? このモジュールは配布されるため、単一のパスをハードコードすることはできません。
__file__
、 sys.path 、 os.chdir で遊んでいますが、面倒です。また__file__
、いつでも利用できるわけではありません。
python - Djangoビューでモジュールを効率的にインポートする
私は疑問に思っていました-人々はdjangoビュー内で一般的に使用される多数のモジュールのインポートをどのように処理しますか?そして、これを効率的に行うための最良の方法は何ですか?
たとえば、次のようなビューがあります。
そして私が見たものから、それらのすべてはHttpResponseまたは他のそのような一般的に使用されるモジュールを使用する必要があります。さらに、BeautifulSoupのようなものが必要なものもあれば、他のもの(md5、authなど)が必要なものもあります。
プロジェクトを開始したときに私がしたことは、私の一般的なインポートのほとんどを含むを作成し、ビュー自体include_all.py
にこれらの特定のものを追加することでした。だから、私は次のようなものを持っていました、
admin_views.py
search_views.py
時間の経過とともに、include_allは必要なものがすべて含まれるその他のファイルになりました。その結果、多くのビューが不要なモジュールをインポートすることになります。
これは効率に影響しますか?つまり、python(django?)はすべてのモジュールを一度インポートし、それらを必要とする他のビューが再度インポートする必要がないように、それらを保存/キャッシュしますか?または、この長いファイルを呼び出す方法は非常に非効率的ですか?各ビューでこれらのモジュールを個別にインポートすることに固執する方がよいでしょうか?
この種のもののベストプラクティスもありますか?
ありがとう!
python - __builtins__ がモジュールと辞書の両方である理由
組み込みモジュールを使用していくつかのインスタンスを挿入しているので、デバッグ目的でグローバルにアクセスできます。モジュールの問題__builtins__
は、それがメイン スクリプト内のモジュールであり、モジュール内の dict であることですが、場合によっては私のスクリプトがメイン スクリプトまたはモジュールになる可能性があるため、これを行う必要があります。
これより短い回避策はありますか?さらに重要なことに、なぜ は__builtins__
このように振る舞うのでしょうか?
これを確認するためのスクリプトを次に示します。モジュール a.py を作成します。
モジュール b.py を作成します。
次に、python a.py を実行します。
python - 例外を使用せずに Python でモジュールを確認する
次のようなことを行う Python でモジュールを確認できます。
しかし、try/except は使いたくありません。これを達成する方法はありますか?(Python 2.5.x で動作するはずです。)
注: try/except を使用しない理由は任意です。例外を使用せずにこれをテストする方法があるかどうかを知りたいからです。
python - DjangoでのPythonモジュールのインポート中にエラーが発生しました
私のDjangoプロジェクトでは、次の行でImportErrorがスローされます:"elementtreeという名前のモジュールがありません"。
ただし、モジュールはインストールされており(つまり、インタラクティブなPythonシェルを実行し、ImportErrorなしでその正確な行を入力できます)、モジュールを含むディレクトリはPYTHONPATHにあります。しかし、ブラウザのいずれかのページにアクセスすると、どういうわけかモジュールが見つからず、ImportErrorがスローされます。これを引き起こしている可能性がありますか?
python - Python を使用して PYTHONPATH を見つけるにはどうすればよいですか?
PYTHONPATH
Python スクリプト (または対話型シェル) 内から、システムの変数にリストされているディレクトリを見つけるにはどうすればよいですか?
python - Windows 98 でネットワーク経由で py2exe プログラムにアクセスすると、ImportErrors がスローされる
私はpy2exeでコンパイルされたpythonプログラムを1台のサーバーマシンから多数のクライアントマシンで実行しています(すべてのマシンのネットワークドライブにマップされています.W :など)。
Windows XP 以降のマシンでは、これまでのところ、Python が W:\python23.dll を拾うという問題はありませんでした (はい、私は W98 との互換性のために Python 2.3.5 を使用しています)。次に、W:\zlib.pyd を使用して、os などのすべての .pyc ファイルを含む W:\library.zip を解凍します。これらはインポートされ、プログラムは問題なく実行されます。
この問題は、一部の Windows 98 SE マシンで発生しています (注: 一部の Windows 98 SE マシン、その他は明らかな問題なく動作するようです)。何が起こるかというと、プログラムは W: から実行され、W:\python23.dll が見つかったと思います (Python の ImportErrors が発生しているため、Python の import ステートメントを実行できる必要があります)。いくつかのことが機能しません:
1) W:\library.zip に .pyc ファイルの唯一のコピーが含まれている場合、
ZipImportError: can't decompress data; zlib not available
(W:\zlib.pyd が利用可能であり、同じネットワーク上の XP 以降のマシンで正常に動作することを考えるとナンセンスです)。
2) .pyc ファイルが py2exe によって python exe 内に実際にバンドルされている場合、または .exe と同じディレクトリに置かれている場合、または PYTHONPATH 変数の一部として設定される名前付きサブディレクトリに置かれている場合 (例: W:\pylib) )、取得しますImportError: no module named os
(os は、sys などの前にインポートされた最初のモジュールです)。
考えてみると、osがインポートされる前にsys.pathを検索できなかったのでしょうか?これらのインポートの順序を変更してみますが、私の疑問はまだ残っています:なぜこれは散発的な問題で、一部のネットワークでは機能し、他のネットワークでは機能しないのですか? また、実行する実行可能ファイル内にバンドルされているファイルを Python に強制的に検索させるにはどうすればよいでしょうか。私は稼働中の Windows 98 SE マシンにすぐにアクセスできますが、稼働していないマシン (私の顧客) には、毎朝店が開く前にしかアクセスできません。
前もって感謝します!
編集:さて、大きな一歩前進。PY2EXE_VERBOSE でデバッグした後、特定の W98SE マシンで発生する問題は、インポートを探すときに正しいパス構文を使用していないことです。まず、PYTHONPATH 環境変数を読み取っていないようです (PY2EXE_VERBOSE のように、私が認識していない py2exe 固有のものがある可能性があります)。
第 2 に、あきらめる前に 1 か所だけを検索します (ファイルが EXE 内にバンドルされている場合は、そこを検索します。そうでない場合は、library.zip を検索します)。
EDIT 2 : 実際、thisによると、Python インタープリターの sys.path と Py2exe 実行可能ファイルの sys.path には違いがあります。具体的には、sys.path contains only a single entry: the full pathname of the shared code archive.
何とか。フォールバックはありませんか?現在の作業ディレクトリでさえありませんか?PATH に追加してみW:\
ますが、py2exe はシステム ライブラリを検索するための標準に準拠していないため、機能しません。
さて、興味深い点です。atexit、os などをロードしようとするパスは次のとおりです。
W:\\library.zip\<module>.<ext>
library.zip の後の 1 つのスラッシュですが、ドライブ文字の後の 2 つのスラッシュに注意してください (これが意図されていて動作する場合は、誰かが私を修正してください)。これが文字列リテラルの場合、スラッシュが二重にされていないため、(無効な) エスケープ シーケンスとして読み取られ、生の文字が出力されます (W:\library.zipos.pyd, W:\library.zipos.dll, ...
スラッシュの代わりに表示されます)。文字列リテラルでない場合、二重スラッシュは自動的にノルムパス化されない可能性があり (そうあるべきです)、二重スラッシュはモジュール ローダーを混乱させます。私が言ったように、set PYTHONPATH=W:\\library.zip\\
その変数を無視するという理由だけではできません。
プログラムの開始時に sys.path.append を使用する価値があるかもしれませんが、特に古い OS の 1 つの構成で問題が発生するため、ハードコーディング モジュール パスは絶対的な最後の手段です。
何か案は?私は 1 つを持っていsys.path
ますos
。もう 1 つは、追加os.getenv('PATH')
するかos.getenv('PYTHONPATH')
、sys.path に追加することです... 再び、os
モジュールが必要です。モジュールも初期化に失敗するsite
ため、.pth ファイルを使用できません。
また、最近、プログラムの開始時に次のコードを試しました。
しかし、それは linecache.pyc やその他のものをロードすることはできません。見た目からは実際にこれらのコマンドを実行することはできません。sys.path を動的に変更するために linecache を必要としない組み込み機能を使用する方法はありますか? それとも、正しい sys.path をハードコーディングする必要がありますか?
python - Python:モジュールからのクラスのインポートを禁止するにはどうすればよいですか?
私は試した:
しかし、もちろん、それは次の場合に限られます。
クラスのインポートをブロックする方法はありますか。誰かが書く私のコードの API レベルでの混乱が心配です。
そしてそれはデバッグ騒乱を引き起こすでしょう。
python - pythonモジュールのインポートでさらに問題が発生する
昨日も同じような質問をしましたが、それ以来、本当に奇妙な問題を抱えています。このディレクトリ構造では:
models / __init__。pyファイルには次の行があります。
そしてpages/__init__。pyには
pages.pyで、user.pyまたはother.pyのクラスを使用するには、次のことが必要です。
上部に、次のUser
ようなクラスを宣言できます。
上部のインポートステートメントのいずれかを除外すると、次のようなエラーが発生します
どんな助けでもいただければ幸いです。私はPythonが大好きですが、インポート機能がPHPのように機能することを望みます。