Python是否有包/模块管理系统?

146

Python有类似RubyGems的软件包/模块管理系统吗?就像在Ruby中可以使用“gem install packagename”一样?

安装Python模块页面上,我只看到了对python setup.py install的引用,但这需要您先找到该软件包。


3
如果你认为Python的包索引PyPI应该有更清晰的安装包说明,请在https://bitbucket.org/pypa/pypi/issue/149/package-pages-should-have-clear-pip投票并评论该问题。 - Colonel Panic
虽然这个问题中的链接在当时是最新的,但现在它已经成为了遗留的distutils文档。我提交了http://bugs.python.org/issue26014来解决这些文档需要更清晰地表明它们不再适用于作为终端用户文档使用(它们仅仅是为了工具实现者的利益而保留)。 - ncoghlan
13个回答

3

由于这里没有人提到pipenv,所以我想描述一下我为什么认为每个人都应该使用它来管理Python包。

正如@ColonelPanic所提到的那样,Python包索引pip以及virtualenv存在一些问题。

Pipenv解决了大多数pip的问题,并提供了其他功能。

Pipenv功能

Pipenv旨在取代pip和virtualenv,这意味着pipenv将自动为每个项目创建一个单独的虚拟环境,从而避免不同项目的不同Python版本/软件包版本之间的冲突。

  • 可以实现真正的确定性构建,同时轻松指定您想要的内容。
  • 为锁定的依赖项生成和检查文件哈希值。
  • 如果可用pyenv,则自动安装所需的Python。
  • 通过查找Pipfile递归地自动查找您的项目主目录。
  • 如果不存在Pipfile,则自动生成一个。
  • 在标准位置自动创建虚拟环境。
  • 在卸载/安装包时自动向Pipfile添加/删除包。
  • 如果存在,则自动加载.env文件。

如果您以前曾在Python项目上工作过,您会意识到这些功能使管理软件包变得更加容易。

其他命令

  • check 检查安全漏洞,并断言PEP 508要求当前环境被满足。(我认为这是一个很棒的功能,尤其是在PyPi上的恶意软件包之后。
  • graph 将显示已安装依赖项的依赖关系图。

您可以在此处阅读更多相关内容 - Pipenv

安装

您可以在此处找到安装文档here

附注:如果您喜欢使用Python包requests,那么您会很高兴知道pipenv也是由同一开发人员Kenneth Reitz开发的。


0

0

Poetry 是你所需要的。它可以处理依赖管理、虚拟环境和运行等问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接