問題タブ [pkg-resources]
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 - `src/`ディレクトリ下のpythonパッケージからプロジェクトルートのテキストファイルにアクセスする方法
パッケージのバージョン番号を、必要なものすべてが参照できる単一の場所に配置したいと考えています。
この Python ガイドでパッケージ バージョンのシングル ソーシングに関するいくつかの提案を見つけたので、#4 を試して、プロジェクト ルートの という名前の単純なテキスト ファイルに保存することにしましたVERSION
。
これは、私のプロジェクトのディレクトリ ツリーの短縮版です (完全なプロジェクトは GitHub で確認できます)。
VERSION
とは兄弟であるためsetup.py
、セットアップ スクリプト内のバージョン ファイルを読み取るのは非常に簡単です。
しかしVERSION
、src/fluidspaces/__main__.py
兄弟ではなく、メイン モジュールはプロジェクト ルートのパスを認識していないため、このアプローチは使用できません。
ガイドには次のリマインダーがありました。
警告: このアプローチでは、VERSION ファイルがすべてのソースおよびバイナリ ディストリビューションに含まれていることを確認する必要があります (たとえば、MANIFEST.in に include VERSION を追加します)。
それは合理的だと思われました-プロジェクトのルートパスを必要とするパッケージモジュールの代わりに、ビルド時にバージョンファイルをパッケージにコピーして簡単にアクセスできます-しかし、その行をマニフェストに追加しましたが、バージョンファイルはまだ表示されていないようですどこでもビルドできます。
ビルドするにはpip install -U .
、プロジェクト ルートから、virtualenv 内で実行しています。<virtualenv>/lib/python3.6/site-packages
結果として作成されるフォルダーは次のとおりです。
私の構成ファイルの詳細:
MANIFEST.in :
setup.py :
私はこのSOの質問を見つけました「data_files」ルートディレクトリを取得するためのPython関数はありますか? ライブラリが私の問題に対する答えだと思いますpkg_resources
が、自分の状況でそれを使用する方法を理解できませんでした。
私が見つけたほとんどの例では、src/
ディレクトリに分離されているのではなく、プロジェクトのルートに直接 python パッケージがあるため、問題が発生しています。src/
次のような推奨事項があるため、ディレクトリを使用しています。
- PyTest: グッド プラクティス: アプリケーション コード外でのテスト
- Ionel Cristian Mărieş - Python ライブラリのパッケージ化
- Hynek Schlawack - テストとパッケージング
私が見つけて少しひねってみた他のノブは、package_data
、include_package_data
、およびdata_files
kwargs ですsetup()
。それらがどれほど関連性があるかわかりません。これらで宣言されたものとマニフェストで宣言されたものとの間に相互作用があるようですが、詳細についてはわかりません。
python - pip パッケージを検索: pkg_resources でカスタム ターゲット ディレクトリを指定
pkg_resources のカスタム ターゲット ディレクトリを指定して pip パッケージを一覧表示する方法はありますか? カスタム ターゲット ディレクトリに既に供給されて--target
いるようなものを使用して、カスタム ターゲット ディレクトリにインストールされているパッケージを検索できるようにしたいと考えています。pkg_resources.require()
私が使いたくないのは:
setuptools.find_packages
使用しているだけなのでsys.path
setuptools.PEP420PackageFinder.find
- パッケージの名前空間を見つけるためのより一般的な方法が必要なため、ディレクトリ名とファイルをトラバースしてパッケージを見つけることも役に立ちませんでした。
これについて何か助けていただければ幸いです。
python - 「pkg_resources」のないエントリ ポイントとコンソール スクリプト?
インストールするとpip
(たとえばvenv
)、<venv>/bin/pip
次のようになります。
対応するエントリ ポイントは として定義され"pip=pip._internal:main"
ます。
私がインストールするときapp
(例えば と を使っvenv
てpip install -e .
)<venv>/bin/app
は次のようになります:
私の対応するエントリポイントは として定義されてい'app=app:main'
ます。
なぜこのような違いがあるのでしょうか。pkg_resources
と同じように、生成されたスクリプトでの使用を避けたいと思いpip
ます。それを達成する方法は?