[解決済み] Pythonアプリケーションで、プラットフォームに応じて条件付きでrequirements.txtファイルを作成する方法はありますか?
2023-04-06 03:58:19
質問
LinuxとWindowsの両プラットフォームに対応するように書いたPythonのアプリケーションがあります。しかし、1つの問題があります... 私がWindowsのために必要とするpythonパッケージの1つは、Linuxと互換性がありません。幸いなことに、Linuxで同じ機能を提供する別のパッケージがあります。他のすべての依存関係は、両方のプラットフォームで互換性があります。
私は、両方のプラットフォームの依存関係を別々に扱うために、2 つの別々の要件ファイルを持つことができることを知っています。win_requirements.txt と linux_requirements.txt のようなものですが、この方法は最適な方法とは思えません。
requirements.txt を 1 つだけにして、どのユーザーでも
pip install -r requirements.txt
を使用して、プラットフォームに関係なく、すべての依存関係をインストールできるようにする方法はないでしょうか?
のようなものでしょうか?
SOAPpy>=0.12.22
pycrypto>=2.6.1
suds>=0.4
Python-ldap>=2.4.19
paramiko>=1.15.2
nose>=1.3.4
selenium>=2.44.0
bottle>=0.12.8
CherryPy>=3.6.0
pika>=0.9.14
if platform.system() == 'Linux':
wmi-client-wrapper>=0.0.12
else if platform.system() == 'Windows':
WMI>=1.4.9
どのように解決するのですか?
この場合
install.py
スクリプトを作成し
pip
をスクリプトで呼び出す。
import pip
_all_ = [
"SOAPpy>=0.12.22",
"pycrypto>=2.6.1",
"suds>=0.4",
"Python-ldap>=2.4.19",
"paramiko>=1.15.2",
"nose>=1.3.4",
"selenium>=2.44.0",
"bottle>=0.12.8",
"CherryPy>=3.6.0",
"pika>=0.9.14",
]
windows = ["wmi-client-wrapper>=0.0.12",]
linux = ["WMI>=1.4.9",]
darwin = []
def install(packages):
for package in packages:
pip.main(['install', package])
if __name__ == '__main__':
from sys import platform
install(_all_)
if platform == 'windows':
install(windows)
if platform.startswith('linux'):
install(linux)
if platform == 'darwin': # MacOS
install(darwin)
この問題を解決する別の方法として
requirements
ファイルを使用する別の方法は
requirements
要件.txt
SOAPpy>=0.12.22
pycrypto>=2.6.1
suds>=0.4
Python-ldap>=2.4.19
paramiko>=1.15.2
nose>=1.3.4
selenium>=2.44.0
bottle>=0.12.8
CherryPy>=3.6.0
windows.txt
-r requirements.txt
WMI>=1.4.9
linux.txt
-r requirements.txt
WMI>=1.4.9
そうすると、プラットフォームに相当する要件だけを呼び出すことができます。
pip install -r windows.txt
pip install -r linux.txt
関連
-
[解決済み] AndroidでPythonを実行する方法はありますか?
-
[解決済み] Pythonで型をチェックする標準的な方法は何ですか?
-
[解決済み] Pythonで複数行のコメントを作成する方法はありますか?
-
[解決済み] Pythonでホームディレクトリを取得するための正しいクロスプラットフォームな方法は何ですか?
-
[解決済み] Pythonで現在のユーザー名を取得するポータブルな方法はありますか?
-
[解決済み] setuptools setup.py ファイルの install_requires kwarg 用の requirements.txt を参照する。
-
[解決済み】Pythonで複数のコンストラクタを持つためのクリーンでPythonicな方法は何ですか?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み] Spyderを仮想環境で動作させるには?
-
[解決済み] Django Rest Framework ファイルアップロード
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] pipで特定のバージョンのパッケージをインストールする
-
[解決済み] コード内にpythonモジュールをインストールする
-
[解決済み] PythonでのAWS Lambdaのインポートモジュールエラー
-
[解決済み] Pythonの要素別タプル演算(sumなど
-
[解決済み] 小数点以下1桁を取得する[重複]。
-
[解決済み] Celeryタスクのユニットテストはどのように行うのですか?
-
[解決済み] Flaskで非同期タスクを作る
-
[解決済み] Python Empty Generator 関数
-
[解決済み] pycharmがタブをスペースに自動変換する
-
[解決済み] Pythonでリストが空かどうかをチェックする方法は?重複