我是python包装和发行的新手。我有一个python应用程序,我想要pip安装,所以我为它创建了一个setup.py。
现在setup.py有install_requires
警告是否缺少依赖项,但我想知道我是否能够/应该提供一种自动安装缺少的依赖项的方法。目前,该应用需要一个自行开发的共享包,而不需要外部包。
修改
我的setup.py:
from setuptools import setup
setup(
name="TcpMonitor",
version="1.0",
packages=["tcpmonitor"],
py_modules=["tcp_monitor"],
install_requires=[
"CommonPyLib",
],
entry_points='''
[console_scripts]
tcp_monitor_gui=tcpmonitor:main
'''
)
Pip安装输出:
Collecting CommonPyLib (from TcpMonitor==1.0)
Could not find a version that satisfies the requirement CommonPyLib (from TcpMonitor==1.0) (from versions: )
No matching distribution found for CommonPyLib (from TcpMonitor==1.0)
答案 0 :(得分:3)
只要依赖项列在install_requires
列表中,它就会自动检查该模块,如果不存在,它将安装它,前提是该模块可以从PyPi安装。如果不是(在PyPi上找不到该包的地方),则会出现Could not find a version that satisfies the requirement
错误。
我在PyPi上找不到任何具有此名称的软件包,因此您需要添加要安装在PyPi上的依赖项,以便通过pip
安装,如果您将软件包托管在别处(例如GitHub),这可能会提供解决方案:How can I make setuptools install a package that's not on PyPI?。
运行pip install commonpylib
返回
找不到满足要求commonlib的版本(来自版本:) 找不到针对commonpylib的匹配分布
所以你没有设置脚本问题,但是在PyPi上找到包的问题(似乎不存在),或者至少Python不知道你在哪里托管它。
另一种选择是将该包与您正在分发的内容集成,而不将其作为依赖项(即将其添加到__init__.py
文件中)。