共享具有模块要求的 python 脚本?

Sharing a python script with module requirements?

我是 python 的新手,我很好奇 python 是否有类似 npm install 的东西可以为我拥有的脚本安装所需的包。我查看了 setup.py 自述文件,它看起来主要是为了创建一个 tarball 以发送到 pip,这不是我想要的。

我希望能够查看源代码,然后 运行 它。就目前而言,当我要求我的同事使用脚本时,他们 运行 导入失败并且必须手动 pip 安装东西,这是一种糟糕的体验。

我的 setup.py 文件是

#!/usr/bin/env python

from distutils.core import setup

setup(name='Add-Webhook',
      version='1.0',
      description='Adds webhooks to git repos',
      author='devshorts',
      packages=['requests'],
     )

当我 运行 它时

$ python setup.py install
running install
running build
running build_py
error: package directory 'requests' does not exist

我有一个位于 setup.py 旁边的小脚本,它使用 requests 包,我希望将它安装在 'install'

$ ls
total 40
-rw-r--r--  1 akropp  JOMAX\Domain Users  1039 Feb 24 09:51 README.md
-rwxr-xr-x  1 akropp  JOMAX\Domain Users  4489 Feb 27 17:01 add-webhook.py
-rw-r--r--  1 akropp  JOMAX\Domain Users   391 Feb 23 14:24 github.iml
-rw-r--r--  1 akropp  JOMAX\Domain Users   213 Apr  8 15:06 setup.py

在项目的根目录中创建 requirements.txt 文件,并添加必要的 Python 包以及您需要的版本。

然后 运行 $pip install -r requirements.txt 安装您在 requirements.txt 文件中指定的所有内容。

不确定这是否是您需要的,但这比 运行宁 $pip install <package name> 好几次。

您误解了 setup 的参数。 packages 参数用于指定您提供的包,而不是这些包的依赖项。

根据 the documentation:

Dependencies on other Python modules and packages can be specified by supplying the requires keyword argument to setup(). The value must be a list of strings. Each string specifies a package that is required, and optionally what versions are sufficient.

您也可以考虑使用 setuptools instead of distutils (switch to from setuptools import setup) and specifying install_requires (see the docs on dependency declarations) - see e.g. Differences between distribute, distutils, setuptools and distutils2?