我是 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)
最佳答案
只要依赖项在 install_requires
列表中列出,它就会自动检查该模块,如果不存在,它将安装它,前提是该模块可以从 PyPi 安装。 。如果没有(在 PyPi 上找不到该包),您会收到 无法找到满足要求的版本
错误。
我在 PyPi 上找不到任何具有此名称的软件包,因此如果您将软件包托管在其他地方(例如 GitHub),则需要添加要在 PyPi 上安装的依赖项,以便通过 pip
安装这可能提供一个解决方案:How can I make setuptools install a package that's not on PyPI? 。
运行pip install commonpylib
返回
Could not find a version that satisfies the requirement commonlib (from versions: ) No matching distribution found for commonpylib
所以你没有安装脚本的问题,而是在 PyPi 上查找包的问题(它似乎不存在),或者至少 Python 不知道你在哪里托管它。
另一个选项是将该包与您正在分发的内容集成,而不使其成为依赖项(即将其添加到 __init__.py
文件等中)。
关于python - pip 安装我的 python 应用程序是否应该自动安装依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49402740/