与模块要求共享python脚本?

时间:2015-04-08 21:56:18

标签: python pip

我是python的新手,并且好奇如果python有类似npm install的东西,那就会为我的脚本安装必需的软件包。我已经查看了setup.py自述文件,看起来它主要是为了创建一个tarball来发送给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

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

$ 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

2 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:3)

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

the documentation

  

可以通过向setup()提供 requires 关键字参数来指定对其他Python模块和包的依赖性。该值必须是字符串列表。每个字符串都指定了一个必需的包,并且可选择哪些版本就足够了。

您还可以考虑使用setuptools代替distutils(切换到from setuptools import setup)并指定install_requires(请参阅the docs on dependency declarations) - 请参阅例如Differences between distribute, distutils, setuptools and distutils2?

相关问题