Setuptools:使用具有不同所需包的构建变体
Setuptools: use build variants with different required packages
我想制作一个源码分发包 (sdist),就所需包而言,开发平台和目标平台需要有所不同。
更具体地说,当我为 Raspberry Pi(目标平台)打包时,我不需要 opencv-python
,因为 OpenCV 是从那里的源构建的,但是在开发 PC 上(Ubuntu), 我需要 opencv-python
.
我试着按照这样的技巧将 --raspi
参数传递给 setup.py
:
install_requires = [
'opencv-python >= 4.1.1',
...
]
if "--raspi" in sys.argv:
install_requires = [req for req in install_requires if not req.startswith('opencv-python')]
sys.argv.remove("--raspi")
setup(
...,
install_requires=install_requires
)
当我 运行 python3 setup.py sdist --raspi
时,这种方法的工作程度使得生成的 ./dist/mypackage.tar.gz/mypackage/mypackage.egg-info/requires.txt
不再包含 opencv-python
。
但是当我运行pip3 install ./dist/mypackage.tar.gz
的时候,还是会报这样的错误:
ERROR: Could not find a version that satisfies the requirement opencv-python>=4.1.1 (from mypackage==0.1) (from versions: none)
这也是当我将 --install-option="--raspi"
传递给 pip3 install
时,我在某处读到的是当 运行 从 pip
.
当我手动编辑发行版 setup.py
(./dist/mypackage.tar.gz/mypackage/setup.py
) 并从所需的包中删除 opencv-python
时,pip3 安装就可以了。
是否有其他方法可以针对不同的构建设置不同的设置或要求?例如。使用两个不同的 setup.cfg
文件(如何?),每个文件指定它们的包集?我不太喜欢这种方法,因为我在这些方法中大部分都是重复的。
您可以使用环境标记(如 PEP 508 中指定)将要求限制在特定平台上:
install_requires = [
'opencv-python >= 4.1.1; platform_machine == "x86_64"'
]
这将在 x86_64 arch 上安装 opencv-python
,但在 ARM、PPC 等上跳过它。
添加到@hoefling 的回答中,我现在还发现了这个:
extras_require={ # Optional
'dev': ['check-manifest'],
'test': ['coverage'],
},
来自pypa sampleproject。我将通过 pip install sampleproject[dev]
.
调用
我想制作一个源码分发包 (sdist),就所需包而言,开发平台和目标平台需要有所不同。
更具体地说,当我为 Raspberry Pi(目标平台)打包时,我不需要 opencv-python
,因为 OpenCV 是从那里的源构建的,但是在开发 PC 上(Ubuntu), 我需要 opencv-python
.
我试着按照这样的技巧将 --raspi
参数传递给 setup.py
:
install_requires = [
'opencv-python >= 4.1.1',
...
]
if "--raspi" in sys.argv:
install_requires = [req for req in install_requires if not req.startswith('opencv-python')]
sys.argv.remove("--raspi")
setup(
...,
install_requires=install_requires
)
当我 运行 python3 setup.py sdist --raspi
时,这种方法的工作程度使得生成的 ./dist/mypackage.tar.gz/mypackage/mypackage.egg-info/requires.txt
不再包含 opencv-python
。
但是当我运行pip3 install ./dist/mypackage.tar.gz
的时候,还是会报这样的错误:
ERROR: Could not find a version that satisfies the requirement opencv-python>=4.1.1 (from mypackage==0.1) (from versions: none)
这也是当我将 --install-option="--raspi"
传递给 pip3 install
时,我在某处读到的是当 运行 从 pip
.
当我手动编辑发行版 setup.py
(./dist/mypackage.tar.gz/mypackage/setup.py
) 并从所需的包中删除 opencv-python
时,pip3 安装就可以了。
是否有其他方法可以针对不同的构建设置不同的设置或要求?例如。使用两个不同的 setup.cfg
文件(如何?),每个文件指定它们的包集?我不太喜欢这种方法,因为我在这些方法中大部分都是重复的。
您可以使用环境标记(如 PEP 508 中指定)将要求限制在特定平台上:
install_requires = [
'opencv-python >= 4.1.1; platform_machine == "x86_64"'
]
这将在 x86_64 arch 上安装 opencv-python
,但在 ARM、PPC 等上跳过它。
添加到@hoefling 的回答中,我现在还发现了这个:
extras_require={ # Optional
'dev': ['check-manifest'],
'test': ['coverage'],
},
来自pypa sampleproject。我将通过 pip install sampleproject[dev]
.