問題タブ [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.
flask - Flask-Script および Flask-Migrate ユーティリティを Flask アプリケーションにパッケージ化する
flask
を使用してアプリケーションを設計していflask-sqlalchemy
ます。モデルの変更に合わせてデータベースの移行を制御するために、flask-migrate
alembic をラップしてflask-script
管理コンテキスト内で使用しています。
次の目標を達成するためにパッケージ配布を分割する方法を決定しようとしています
- メイン アプリケーション パッケージの依存関係の最小セット
- メインのアプリケーション モジュールに応じて、おそらくセカンダリ パッケージを使用して、移行と展開のための管理スクリプトとテスト データの配布を許可する
プロジェクトの構造は次のとおりです。
私manage.py
は次のように見えます。これは、オブジェクトをアプリにアタッチすることで、メイン アプリケーション パッケージの依存関係を回避する方法alembic
です。これにより、一般的なフラスコ/アプリ構成と同じ構成ファイルで移行構成を制御することもできます (構成コンテキストはマネージャーによってプッシュされ、.flask-migrate
Migrate
manage.py
Migrate.init_app
アプリケーションサブマネージャーは、sqlalchemy を使用してテーブルを作成し、ディレクトリから test_data をテーブルに入力するmyapp.database.database_manager
コマンドを有効にしますが、移行スクリプトをフックせず、アプリケーション構成コンテキストを使用して/コマンドを実行できるようにします。python manage.py database create/drop/test_data
tests/
python manage.py migration init/revision/migrate/...
flask-migrate
alembic
このアプリケーションを配布して、内部サーバーにデプロイしようとしています。現在使用されているように、2 つの配布ユース ケースがあります。
新しいサーバーをインストールする
- ソース配布をインストールする
- DBホストなどを反映するために新しい設定ファイルを作成します。
manage.py -c /path/to/config
でデータベース テーブルを作成するために使用します。database create
- HTTP サーバーを wsgi.py に向ける
既存のサーバーを更新する
- ソース配布の更新
- 現在のアプリ コンテキストを使用
manage.py -c /path/to/server/config migration upgrade
してデータベースをプルアップするために使用します - サーバーは wsgi.py を指し続けます
myapp
このディストリビューションをホイール/パッケージに移動して、企業のイントラネットでの展開を自動化できるようにしたいと考えています。ここで見ているのは、 Flask フレームワークの依存関係と wsgi エントリポイントのみを使用して、パッケージをメイン パッケージに分割したいということです。、、およびディレクトリがmyapp-manage
含まれます。manage.py
tests
migrations
したがって、完璧な世界では、アプリケーションはグローバル構成ファイルを使用してシステムにインストールされ、特定の管理ユーザーが管理パッケージにアクセスしてアップグレードを実行できます。
現在、ディストリビューションを分割し、同じソース ディストリビューションから 2 つの別個のパッケージを作成しようsetup-app.py
としています。setup-manage.py
移行スクリプトと管理スクリプトをフラスコ アプリケーションにパッケージ化するより適切な方法はありますか? 私はドキュメントを掘り下げましたが、flask アプリケーションをパッケージ化する方法は明確ですが、管理スクリプトと移行の配布戦略はあまり明確ではありません。
python - URL からダウンロードされた外部データの依存関係を含む Python モジュールをパッケージ化することは可能ですか?
AI アプリケーション用のトレーニング済みデータセットを使用するモジュールをパッケージ化するために setuptools を使用しています。特に、nltk データ ファイルvader_lexicon.txt
で見つかったものを使用しています。
pip から nltk をインストールする場合、データセットは自動的にダウンロードされません。特定のデータセットを取得するには、コマンドラインまたは Python インタープリターからコマンドを手動で実行する必要があります。すべてのデータセットを含めると数百メガバイトになるため、彼らがこれを行ったと思われます。
setuptools のドキュメントから、データ ファイルを含める方法は を使用するMANIFEST.in
ように見えますが、この場合、ソース配布にデータ ファイルを含める必要があるようです。
遠隔地からのデータを含める方法はありますか?