任何人都可以解释,setup.py它是什么以及如何配置或使用?
我有一个requirements.txt文件,我正在使用Travis-CI.看来愚蠢复制中都要求requirements.txt和setup.py,所以我希望到一个文件句柄传递给install_requires在kwarg setuptools.setup.
这可能吗?如果是这样,我该怎么做呢?
这是我的requirements.txt档案:
guessit>=0.5.2
tvdb_api>=1.8.2
hachoir-metadata>=1.3.3
hachoir-core>=1.3.3
hachoir-parser>=1.3.4
Run Code Online (Sandbox Code Playgroud) 我有两个分支,开发和生产.每个都有依赖关系,其中一些是不同的.开发指向本身正在开发的依赖项.同样适用于生产.我需要部署到Heroku,它希望每个分支的依赖关系都在一个名为'requirements.txt'的文件中.
组织的最佳方式是什么?
我想到的是:
我正在使用带有virtualenv的pip来打包和安装一些Python库.
我想我正在做的是一个很常见的场景.我是几个库的维护者,我可以明确地指定依赖项.我的一些库依赖于第三方库,这些库具有我无法控制的传递依赖性.
我想要实现的是让pip install我的一个库下载/安装它的所有上游依赖项.我在pip文档中遇到的问题是,需求文件是否/如何自行完成,或者它们实际上只是对使用的补充install_requires.
我是否会install_requires在所有库中使用指定依赖项和版本范围,然后仅使用需求文件来解决冲突和/或冻结它们以进行生产构建?
让我们假装我生活在一个想象的世界(我知道,我知道),我的上游依赖是直截了当的,并保证永远不会冲突或破坏向后兼容性.我是否会被迫使用pip要求文件或者只是让pip/setuptools/distribute安装所有内容install_requires?
这里有很多类似的问题,但我找不到任何与使用其中一个或者和谐地使用它们一样基本的问题.
在我的应用程序中,我想使用:
packageA,这需要 packageX==1.3packageB,这需要 packageX==1.4packageX==1.5如何安装packageX带pip的多个版本来处理这种情况?
我正要尝试从 GitHub 下载的 Python 包,发现它没有 . setup.py,所以我无法安装它
pip install -e <folder>
Run Code Online (Sandbox Code Playgroud)
相反,该包有一个pyproject.toml文件,该文件似乎与setup.py通常的条目非常相似。
谷歌搜索引导我进入PEP-518,它setup.py在基本原理部分给出了一些批评。但是,它没有明确说明setup.py应该避免使用 ,或者pyproject.toml完全取代setup.py.
是pyproject.toml用来代替的东西setup.py吗?或者一个包应该同时带有 apyproject.toml和 a setup.py?
如何安装pyproject.toml处于可编辑状态的项目?
我最近编写并发布了一个 python 包 - 这是我第一次向 PyPi 发布一些东西,所以我仍在学习。
我一直认为将您的需求同时存储在 setup.py 和requirements.txt 中似乎很疯狂,所以我让 setup.py 只读取requirements.txt 文件: https: //github.com/big- o/cherrypicker/blob/bf7382cbdabfc6608e3aec388903db32a917314c/setup.py#L32。不过,我从未见过任何其他项目这样做,这让我建议有充分的理由不这样做。
谁能向我解释为什么我不应该这样做(或者为什么这不是问题)?
我见过其他解释说 setup.py 用于安装您的软件包,而requirements.txt 用于设置您的环境。但我看不出有什么区别 - 依赖关系是相同的,并且永远如此。如果我需要一组不同的包,例如用于开发的额外测试包,我可以在 setup.py 的 extras_require 部分中单独指定。
编辑:我明白 setup.py 和requirements.txt 的两个不同角色是什么,我的问题是为什么两者需要独立而不是共享两者之间的公共依赖关系列表?
python ×7
pip ×5
setup.py ×2
setuptools ×2
deployment ×1
distribute ×1
heroku ×1
packaging ×1
pypi ×1
python-3.x ×1