我是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
答案 0 :(得分:5)
在项目的根目录中创建requirements.txt
文件,并添加所需版本的必要Python包。
然后只需运行$pip install -r requirements.txt
即可安装您在requirements.txt
文件中指定的所有内容。
不确定这是否是您所需要的,但这比运行$pip install <package name>
多次更好。
答案 1 :(得分:3)
您误解了setup
的参数。 packages
参数用于指定您提供的包,而不是这些包的依赖关系。
可以通过向
setup()
提供 requires 关键字参数来指定对其他Python模块和包的依赖性。该值必须是字符串列表。每个字符串都指定了一个必需的包,并且可选择哪些版本就足够了。
您还可以考虑使用setuptools
代替distutils
(切换到from setuptools import setup
)并指定install_requires
(请参阅the docs on dependency declarations) - 请参阅例如Differences between distribute, distutils, setuptools and distutils2?