問題タブ [namespace-package]

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.

0 投票する
1 に答える
584 参照

python - setuptools を使用すると、名前空間パッケージの __init__.py ファイルが消えるのはいつですか?

setuptoolsのドキュメントは__init__.py、名前空間からファイルにコードを追加することについて非常に明示的です。

名前空間パッケージの__init__.py. 開発中、またはプロジェクトが .egg ファイルとしてインストールされている場合は機能しているように見えても、プロジェクトが「システム」パッケージ ツールを使用してインストールされている場合は機能しません。このような場合、__init__.pyファイルはインストールされず、実行もされません。 .

しかし、私はこれらの「システム」パッケージ ツールが何であるかを理解していません。彼らは何ですか?__init__.pyファイルがなくなったこの状況をどのように再現できますか?

0 投票する
1 に答える
265 参照

python - Python ライブラリのインストール後に奇妙なファイルが自動的に作成される

C ライブラリに依存する Python ライブラリがあるので、Cython を使用して対処しています。ライブラリをラップすることができ、インストールの準備が整いましたが、奇妙な問題に直面しています (注: 広告を避けるために、ライブラリの名前は使用していません)。

次のディレクトリ構造があります。

はPython で簡単にインポートできる にsetup.py変換_lib.pyxされるはずです。_lib.soまた、library.module名前空間パッケージとしてインストールされることになっているためlib.__init__.py、PEP420 で必要な 1 行のコードが含まれています。

しかし、私がするとき:

作成されたものを確認した後、次の行が含まれる作成された内部が.egg見つかりました_lib.pymodule

_lib.pyが一緒に存在している間、インポートする_lib.soとすぐに、C ライブラリの実際の Python ラッパーであるインポートではなく、_lib.py ファイルをインポートします。lib.py_lib_lib.so

_lib.pyが作成される理由と、それを回避する方法を知りたいです。

0 投票する
1 に答える
362 参照

python - Python 名前空間パッケージのローカル テスト バージョンをインポートする

Python 2.7 名前空間パッケージのローカル テスト バージョンをインポートする方法を知りたいです。この例では、パッケージはルートSka.engarchiveの下の名前空間パッケージです。Ska(この構造は、レガシーによって強制されています)。

この例はsys.path、ローカル ディレクトリから開始するように設定した後でも、パッケージのローカル バージョンではなく、インストールされているバージョンがインポートされることを示しています。

この問題は、Python 2 での名前空間パッケージの実装方法に関連していると思います。どういうわけか、名前空間パスは常にリストの先頭にあります。しかし、おそらくいくつかの回避策がありますか?パッケージのドキュメントを掘り下げるのに時間を費やしましたsiteが、適切なものが見つからなかっただけかもしれません。

上記の例では、Anaconda Python ディストリビューションを使用しています。興味深いことに、ActiveState の非常に古いビルドの Python を使用すると、この例ではローカル パッケージをインポートするという望ましい結果が得られます。

どんな助けでも大歓迎です!

0 投票する
1 に答える
151 参照

python - デフォルトで新しい python パッケージを名前空間パッケージとして作成する必要がありますか?

Python 3.3 には暗黙的な名前空間パッケージ (PEP420) があり、Python 2.7 では、__init__py に 2 行を追加することでパッケージを名前空間パッケージとしてマークできます。Python で名前空間パッケージを作成する方法を参照してください。

パッケージが有効にする機能を考えると、新しいパッケージはデフォルトで名前空間パッケージとして作成する必要があるようです。

通常の python パッケージは、「クローズド」パッケージの必要性が明らかな例外的な場合にのみ使用してください。

このアプローチの欠点は何ですか?