【发布时间】:2021-12-17 18:35:55
【问题描述】:
我已经实现了一个使用pip install 命令安装需求的代码,没有任何问题。为了不为用户安装不必要的包,需要问他们问题(输入)并根据他们的回答安装包。
这是我当前的 setup.py 文件,它运行良好,但安装了所有软件包:
setuptools.setup(
name="backbone",
version="1",
entry_points={
"console_scripts": [
'backbone_cli=backbone.backbone:main'
]
},
author="Mostafa Ghadimi",
author_email="<my_email>",
long_description=long_description,
long_description_content_type="text/markdown",
install_requires=requirements,
include_package_data=True,
url="https://github.com/mostafaghadimi/backbone",
classifiers=[
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
],
packages=setuptools.find_packages(),
python_requires=">=3.6",
license='MIT',
)
举个例子,假设我们想问用户他/她是否想安装numpy。我已经尝试过does_need_numpy = input('Do you want to install numpy? [y]es/[n]o'),但它不起作用,当我将它添加到 setup.py 时,在我想安装包时遇到以下错误(pip install <package_name>):
File "/tmp/pip-req-build-ldgfq6l6/setup.py", line 11, in <module>
does_need_numpy = input('Do you want to install numpy? [y]es/[n]o')
EOFError: EOF when reading a line
正如我所发现的,有一些像 cmdclass install 这样的功能可能是解决方案。
谁能帮我实现预期的功能?
【问题讨论】:
-
不要要求用户使用
extras_require(另请参阅stackoverflow.com/search?q=[setuptools]+extras_require)并教用户只安装他们需要的附加功能。 -
@phd 感谢您的回答。有没有办法询问用户输入并根据他们的输入(决定)安装包?
-
不适用于
pip。它旨在以非交互方式使用。无论如何pip install <some.whl>不使用setup.py:setup.py在构建阶段使用,但不在安装阶段使用。 -
@phd 感谢您提供帮助的 cmets。你特地帮我解决了问题!
标签: python pip setuptools python-packaging