如何用setuptools在非macOS环境下排除appscript库?
解决非macOS系统排除appscript依赖的问题
你之前的写法错误在于**setuptools.find_packages()的exclude参数作用对象是你自己项目的本地包目录**,用来排除你代码里的子模块(比如测试目录),和第三方依赖包完全无关,所以根本没法阻止非mac系统安装appscript。
下面是两种正确的解决方法:
方法一:使用环境标记(推荐,符合PyPI标准)
直接在install_requires里给appscript加上系统限定,只有macOS(Darwin)环境才会安装它:
from setuptools import setup setup( # 你的包名称、版本等信息 name="your-package-name", version="0.1.0", # 其他配置... install_requires=[ # 在这里添加你的其他通用依赖 "requests>=2.25.1", # 仅在macOS下安装appscript "appscript==1.2.0; platform_system == 'Darwin'" ], packages=setuptools.find_packages() # 这里不需要exclude,正常找你自己的代码包 )
方法二:通过代码判断系统后构造依赖列表
如果更习惯用条件判断的方式,可以在setup.py里先检测系统,再决定是否添加appscript到依赖:
import platform from setuptools import setup # 先定义通用依赖 install_requires = [ "requests>=2.25.1", # 其他通用依赖... ] # 仅在macOS系统下添加appscript if platform.system() == "Darwin": install_requires.append("appscript==1.2.0") setup( name="your-package-name", version="0.1.0", install_requires=install_requires, packages=setuptools.find_packages() )
这两种方法都能让pip在非macOS系统下自动跳过appscript的安装,避免编译错误。
内容的提问来源于stack exchange,提问作者TheCrazySwede
相关产品推荐
相关产品推荐

