上記の回答にコメントしてフィードバックを受け取った後、私は自分のコメントを回答に変えようと思いました。上記の回答はすべて問題ありませんが、私の経験から、これらの回答に「欠けている」ものが1つ見つかりました。それを指摘する必要があるため、ここでこの問題について説明します。
イラストを簡潔かつ完全にするために、私は非常に最小限で単純なPython3プロジェクトを作成しました。使用している唯一のサードパーティパッケージは、有名なSSHクライアントパッケージですparamiko
(公式のPyPiページはここにあります)。
私のプロジェクトの仮想環境のPythonインタープリターはバージョン3.6.9です。
ここで、python_requires
「動作中」の属性を確認するためにsetup.py
、次のように見えるプロジェクトのスクリプトに属性を追加しました。
from setuptools import setup, find_packages
setup(name='mySampleProject',
version='1.0',
description='Sample project in Python 3',
author='Guy Avraham',
license='MIT',
packages=find_packages(),
include_package_data=True,
python_requires='>=3.8',
install_requires=['paramiko'])
Pythonのバージョンが3.8以降になることが「必要」であることに注意してください。もちろん、これはプロジェクトの仮想環境の現在のPythonバージョンである3.6.9では機能しないはずです。
ここで、で「通常の」使用法を使用してプロジェクトをビルドするとsetup.py
、つまり:を実行するpython3 setup.py install
と、プロジェクトは正常にビルドされました。pip3 list
コマンドを実行した後、コマンドの次の出力を参照してくださいpython3 setup.py install
。
(mySampleProject_env) guya@ubuntu:~/mySampleProject$ pip3 list
DEPRECATION: The default format will switch to columns in the future. You can use --
format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
bcrypt (3.2.0)
cffi (1.14.3)
cryptography (3.1.1)
mySampleProject (1.0)
paramiko (2.7.2)
pip (9.0.1)
pkg-resources (0.0.0)
pycparser (2.20)
PyNaCl (1.4.0)
setuptools (39.0.1)
six (1.15.0)
ご覧のとおり、プロジェクトとそのすべての「サブ依存関係」は、私が予期していなかったにもかかわらず、インストールされました。
一方、コマンドを使用してプロジェクトをインストールするとpip3 install -e .
(「現在の作業ディレクトリ」を示すことに注意してください.
)、次の出力が得られました。
(mySampleProject_env) guya@ubuntu:~/mySampleProject$ pip3 install -e .
Obtaining file:///home/guya/mySampleProject
mySampleProject requires Python '>=3.8' but the running Python is 3.6.9
これは実際、python_requires
属性を「考慮」し、プロジェクトのビルドを「失敗」させます。
これについては、このページのチュートリアルの最初の段落と、このビデオ
の09:00から11:00までの間に詳しく説明されています。
注: Python 2(またはPython 2)について上記のすべてをチェックしたわけではありませんpip
。