python - 具有操作系统特定依赖性的 pip 包
问题描述
我想创建一个依赖于某些操作系统特定文件的 pip 包:
假设有:
- 依赖关系_Windows_x86_64.zip
- 依赖项_Linux_x86_64.zip
- 依赖项_MAC_OS_X.zip
我不想将所有三个档案都包含在一个包项目中,而是在打包过程中动态下载它们pip install my-package
基于用户的操作系统期间动态下载它们。我怎样才能做到这一点 ?我应该把负责下载/解压缩这些文件的代码放在哪里?
我的setup.py看起来像这样:
from setuptools import setup
setup(
name='my-package',
version='0.0.1',
description='Package description',
py_modules=['my_package'],
package_dir={'': 'src'},
classifiers=[
'Intended Audience :: Developers',
'License :: OSI Approved :: MIT License',
'Operating System :: POSIX :: Linux',
'Operating System :: Microsoft :: Windows',
'Operating System :: MacOS',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.7'
],
python_requires='>=3.7'
)
解决方案
特定于平台的依赖项可以保存在单独的 Python 项目中(仅数据包的包装器),然后从主项目中需要,如下所示:
# setup.cfg
# ...
[options]
install_requires =
my_package_win_amd64 ; platform_system=="Windows" and platform_machine=="x86_64"
my_package_linux-x86_64 ; platform_system=="Linux" and platform_machine=="x86_64"
这种方法不依赖于setuptools并且可以与其他构建系统一起使用。
推荐阅读
- c - Why does my code terminate when I add a 7th character to my array?
- django - Django: production app on Heroku cant find templates with "path" urlpattern
- postgresql - 启动 pgpool 时,这个“验证失败”错误是什么?
- android - 错误:无法解决:com.android.support:appcompat-v7:28.0.0
- c# - Not receiving result it seems with "onActivityResult()"
- python - Format first row in ReportLab table
- r - 为什么使用 sf 包创建的 shapefile 在 ArcMap 中不显示相同的 CRS?
- google-apps-script - 如何防止 NOW 功能每次自动更新?有没有办法做到这一点?
- azure - DotNetNuke 实例无法启动
- python - 无法将 Beautiful Soup 安装到 Python 2,因为我已经在我的 Python 3 中安装了它,但我也无法导入或卸载它