应该pip安装我的python应用程序自动安装依赖项?

Should pip-installing my python app automatically install dependencies?

我对python的打包和分发是个新手。我有一个要pip安装的python应用程序,所以我为它创建了一个setup.py。

现在,setup.py有了install_requires,它会在缺少依赖项时发出警报,但我想知道是否可以/应该提供一种自动安装缺少依赖项的方法。目前,该应用需要一个自主开发的共享包,没有外部包。

编辑:

我的Stupp.Py:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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安装输出:

1
2
3
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上找不到该包),您将得到一个Could not find a version that satisfies the requirement错误。

我在pypi上找不到任何具有此名称的包,因此需要添加要安装在要通过pip安装的pypi上的依赖项,如果您将包托管在其他位置(例如github),这可能提供一个解决方案:如何使安装工具安装不在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文件等)。