タイトルが示すように、特定のページが1つのバージョンのパッケージを使用し、他のページが異なるバージョンのパッケージを使用するように、1つのフラスコアプリから複数のconda環境を実行したいと思います。
または、2つのアプリを同時に実行してから、一方から他方に適切にリダイレクトできるようにする必要がある場合もあります。
インターネットを調べても何も見つかりませんでした。どこから始めればよいかについてのアイデア/ドキュメントはありますか?
編集私はこれは悪い考えであり、私の試みた解決策ではなく問題について詳しく説明すると言われました
問題は、異なるバージョンのscikitで実行された2つの異なるMLモデルと対話しようとしている特定のパッケージがあることです。同僚から渡されたため、再現できません。さらに、fuzzywuzzyを使用して名前の照合を行っているため、必要な他のパッケージで問題が発生しています。
両方のバージョンを異なる場所にインストールして(互いに上書きしないように)、パッケージの名前を変更することで、求めていることを実行できます。これが唯一のオプションのようです。
次の例では、2つの仮想環境をセットアップします。最初にscitkit-learn 0.22.2をインストールし、2番目に0.20.4をインストールしてから、Pythonが区別できるようにパッケージの名前を移動します。それらを出力し、バージョンを出力します($はコマンドラインに入力するものを示します):
$ python3 -m venv sk1
$ source sk1/bin/activate
$ pip3 install scikit-learn==0.22.2 # install to venv 1
$ deactivate # leave
$ python3 -m venv sk2
$ source sk2/bin/activate
$ pip3 install scikit-learn==0.20.4 # install to venv 2
$ deactivate
# move the package names
$ mv ./sk1/lib/python3.7/site-packages/sklearn ./sk1/lib/python3.7/site-packages/sklearn0222
$ mv ./sk2/lib/python3.7/site-packages/sklearn ./sk2/libpython3.7/site-packages/sklearn0204
# add both of them to your PYTHONPATH
$ export PYTHONPATH=$PYTHONPATH:$(pwd)/sk1/lib/python3.7/site-packages/sklearn0222
$ export PYTHONPATH=$PYTHONPATH:$(pwd)/sk2/lib/python3.7/site-packages/sklearn0204
それでは、Pythonインタープリターに移動して、インポートしてみましょう。
$ python3
>>> import sklearn0222 as sk0222
>>> import sklearn0204 as sk0204
>>> sk0222.__version__
'0.22.2'
>>> sk0204.__version__
'0.20.4'
これは、パッケージのバージョン固有のコードを使用して実行しますが、それぞれを参照するときは細心の注意を払う必要があり、同じモジュール内で両方のパッケージを使用することはできません。したがって、mymodule1.pyではsklearn0222をインポートしてそのサブモジュールを使用でき、mymodule2.pyではsklearn0204をインポートしてそのサブモジュールを使用できますが、プログラムの同じモジュールで両方を使用しようとすると、2番目は認識されません。
繰り返しますが、これは悪い考えですが、これはあなたが探しているものを手に入れる方法です。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加