問題タブ [python-packaging]

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 投票する
0 に答える
725 参照

flask - Flask-Script および Flask-Migrate ユーティリティを Flask アプリケーションにパッケージ化する

flaskを使用してアプリケーションを設計していflask-sqlalchemyます。モデルの変更に合わせてデータベースの移行を制御するために、flask-migratealembic をラップしてflask-script管理コンテキスト内で使用しています。

次の目標を達成するためにパッケージ配布を分割する方法を決定しようとしています

  1. メイン アプリケーション パッケージの依存関係の最小セット
  2. メインのアプリケーション モジュールに応じて、おそらくセカンダリ パッケージを使用して、移行と展開のための管理スクリプトとテスト データの配布を許可する

プロジェクトの構造は次のとおりです。

manage.pyは次のように見えます。これは、オブジェクトをアプリにアタッチすることで、メイン アプリケーション パッケージの依存関係を回避する方法alembicです。これにより、一般的なフラスコ/アプリ構成と同じ構成ファイルで移行構成を制御することもできます (構成コンテキストはマネージャーによってプッシュされ、.flask-migrateMigratemanage.pyMigrate.init_app

アプリケーションサブマネージャーは、sqlalchemy を使用してテーブルを作成し、ディレクトリから test_data をテーブルに入力するmyapp.database.database_managerコマンドを有効にしますが、移行スクリプトをフックせず、アプリケーション構成コンテキストを使用して/コマンドを実行できるようにします。python manage.py database create/drop/test_datatests/python manage.py migration init/revision/migrate/...flask-migratealembic

このアプリケーションを配布して、内部サーバーにデプロイしようとしています。現在使用されているように、2 つの配布ユース ケースがあります。

  1. 新しいサーバーをインストールする

    • ソース配布をインストールする
    • DBホストなどを反映するために新しい設定ファイルを作成します。
    • manage.py -c /path/to/configでデータベース テーブルを作成するために使用します。database create
    • HTTP サーバーを wsgi.py に向ける
  2. 既存のサーバーを更新する

    • ソース配布の更新
    • 現在のアプリ コンテキストを使用manage.py -c /path/to/server/config migration upgradeしてデータベースをプルアップするために使用します
    • サーバーは wsgi.py を指し続けます

myappこのディストリビューションをホイール/パッケージに移動して、企業のイントラネットでの展開を自動化できるようにしたいと考えています。ここで見ているのは、 Flask フレームワークの依存関係と wsgi エントリポイントのみを使用して、パッケージをメイン パッケージに分割したいということです。、、およびディレクトリがmyapp-manage含まれます。manage.pytestsmigrations

したがって、完璧な世界では、アプリケーションはグローバル構成ファイルを使用してシステムにインストールされ、特定の管理ユーザーが管理パッケージにアクセスしてアップグレードを実行できます。

現在、ディストリビューションを分割し、同じソース ディストリビューションから 2 つの別個のパッケージを作成しようsetup-app.pyとしています。setup-manage.py移行スクリプトと管理スクリプトをフラスコ アプリケーションにパッケージ化するより適切な方法はありますか? 私はドキュメントを掘り下げましたが、flask アプリケーションをパッケージ化する方法は明確ですが、管理スクリプトと移行の配布戦略はあまり明確ではありません。

0 投票する
0 に答える
181 参照

python - URL からダウンロードされた外部データの依存関係を含む Python モジュールをパッケージ化することは可能ですか?

AI アプリケーション用のトレーニング済みデータセットを使用するモジュールをパッケージ化するために setuptools を使用しています。特に、nltk データ ファイルvader_lexicon.txtで見つかったものを使用しています。

pip から nltk をインストールする場合、データセットは自動的にダウンロードされません。特定のデータセットを取得するには、コマンドラインまたは Python インタープリターからコマンドを手動で実行する必要があります。すべてのデータセットを含めると数百メガバイトになるため、彼らがこれを行ったと思われます。

setuptools のドキュメントから、データ ファイルを含める方法は を使用するMANIFEST.inように見えますが、この場合、ソース配布にデータ ファイルを含める必要があるようです。

遠隔地からのデータを含める方法はありますか?