如何解决如何在一个具有多个包的pypi项目中选择性安装包?
.
├── demo
│ └── __init__.py
├── demo2
│ └── __init__.py
└── setup.py
演示/__init__.py:
#!/usr/bin/env python
#-*- coding:utf-8 -*-
def test():
print("demo1!")
if __name__ == '__main__':
test()
demo2/__init__.py:
#!/usr/bin/env python
#-*- coding:utf-8 -*-
def test():
print("demo2!")
if __name__ == '__main__':
test()
setup.py:
from setuptools import setup,find_packages
setup(
name="demo20210216",version="0.1.0",packages=find_packages(),entry_points={
'console_scripts': [
'demo = demo:test','demo2 = demo2:test',]
}
)
# python setup.py sdist bdist_wheel
# twine upload dist/*
然后我可以使用 pip install demo20210216
来安装包,并且可以验证我安装了两个包 demo
和 demo2
,同时脚本 demo
和 demo2
安装在 Scripts 文件夹中。
问题:
一切都很好,只是为了demo2
,我的大多数观众不需要它。
所以,我想找到一种方法:默认只安装demo1
,但是如果用户需要,他/她可以使用其他方式安装demo2
,有没有办法在pip中实现它?
(PS:我不想将 demo1
和 demo2
分开到不同的 pypi 项目)
解决方法
最后,没有找到更多的解决方案,只使用评论中的解决方案:即使用一个包装项目依赖于其他项目(demo1,demo2):
setup.py:
from setuptools import setup,find_packages
setup(
name="demowrapper",version="0.1.0",packages=find_packages(),extras_require={
'demo1': ['demo1'],'demo2': ['demo2'],},)
那么,至少对用户来说,它看起来仍然可以面对一个顶级项目demowrapper
,并且可以选择要安装的组件pip install demowrapper[demo1]
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。