我知道virtualenv和pip。但这些与bundler / carton有点不同。
例如:
exec
子命令(bundle exec bar
)每个Python开发人员都使用virtualenv / pip吗?是否有其他Python包管理工具?
答案 0 :(得分:70)
从我所读到的关于bundler的内容 - 没有virtualenv的pip应该对你有用。您可以将它视为常规gem命令和bundler之间的内容。你可以用pip做的常见事情:
安装包(gem install)
pip install mypackage
依赖关系和批量安装(gemfile)
可能最简单的方法是使用pip的requirements.txt文件。基本上它只是一个包含可能版本限制的必需包的简单列表。它可能看起来像:
nose==1.1.2
django<1.3
PIL
稍后当您想安装这些依赖项时,您会这样做:
$ pip install -r requirements.txt
在需求文件语法中查看所有当前包的简单方法是:
$ pip freeze
您可以阅读更多相关信息here。
执行(bundler exec)
所有带有可执行文件的python包通常在安装后直接可用(除非您有自定义安装或它是一个特殊的包)。例如:
$ pip install gunicorn
$ gunicorn -h
从缓存(捆绑包)
打包安装宝石有pip bundle
和pip zip/unzip
。但我不确定是否有很多人使用它。
p.s。如果您关心环境隔离,您还可以将virtualenv与pip一起使用(他们是亲密的朋友并且完美地协同工作)。默认情况下,pip会在系统范围内安装可能需要管理员权限的软件包。
答案 1 :(得分:12)
您可以使用pipenv,它与bundler具有类似的接口。
$ pip install pipenv
Pipenv自动创建virtualenv并安装来自Pipfile
或Pipfile.lock
的依赖项。
$ pipenv --three # Create virtualenv with Python3
$ pipenv install # Install dependencies from Pipfile
$ pipenv install requests # Install `requests` and update Pipfile
$ pipenv lock # Generate `Pipfile.lock`
$ pipenv shell # Run shell with virtualenv activated
您可以使用像bundle exec
这样的virtualenv范围运行命令。
$ pipenv run python3 -c "print('hello!')"
答案 2 :(得分:4)
有一个克隆pbundler。
目前位于pip的版本只读取您已有的requirements.txt
文件,但已过时。它也不完全等同:它坚持制作virtualenv
。我注意到,Bundler只安装了缺少的软件包,并允许您选择将sudo密码安装到系统目录或重新启动,这似乎不是pbundler的功能。
然而,git上的版本几乎完全重写,更接近Bundler的行为......包括有一个&#34; Cheesefile&#34;现在不支持requirements.txt。这是不幸的,因为requirements.txt是pythonland中事实上的标准,甚至还有standardize it的官方BDFL标记工作。当它生效时,你可以确定像pbundler这样的东西将成为事实上的标准。唉,我所知道的并不是很稳定(但我会爱被证明是错误的。)
答案 3 :(得分:1)
我写了一个 - https://github.com/Deepwalker/pundler。
在PIP上pundle
,已经取名。
它使用requirements(_\w+)?.txt
个文件作为您所需的依赖项,并使用冻结版本创建frozen(_\w+)?.txt
个文件。
关于(_\w+)?
事 - 这是envs。您可以创建requirements_test.txt,然后使用PUNDLEENV=test
在您的运行中使用此deps,其中包含requirements.txt。
关于virtualenv - 你不需要一个,它是第一个头上的捆绑器所带来的。
答案 4 :(得分:1)
我说Shovel值得一看。它是专门为Python的Python版本开发的。该项目没有大量的提交活动,但似乎稳定且有用。
答案 5 :(得分:1)
自2020年以来,Python诗歌最接近Ruby捆绑软件(并且自2018年以来)。它已经有两年多的历史了,仍然非常活跃,拥有出色的文档。有人可能会抱怨curl-pipe-python
风格是推荐的安装方式,但也有其他选择,例如在MacOS上自制。
它在后台使用了virtualenvs(与bundler相反),但是它提供并使用了一个锁定文件,照顾了子依赖关系,遵守指定的版本限制,并允许自动更新过时的软件包。您最喜欢的shell甚至具有自动补全功能。
通过使用pyproject.toml文件,它还比捆绑器(更接近gemspec。它还可以与JavaScript和TypeScript的npm和yarn相提并论)。
Poetrify(一个补充项目)有助于将项目从Requirements.txt转换为pyproject.toml进行诗歌创作。
如果您需要将其用于其他工具(或者希望返回的情况不太可能),可以通过poetry export -f requirements.txt > requirements.txt
将锁定文件导出到requirements.txt。
答案 6 :(得分:1)
您可以使用 pipx 在隔离环境中自动安装和运行 Python 应用程序。
您可以使用 pipenv 自动为您的项目创建和管理 virtualenv。
两者都使用虚拟环境工具包装 pip,并针对不同的用例。
所有这些都是 github PyPA repository 中列出的最受关注的项目之一。
仅供参考:Debian Bullseye/testing 目前缺少 pipx。但是来自 sid 的包应该可以正常工作。 (2021-06-19)
答案 7 :(得分:0)
不,并非所有开发人员都使用virtualenv和/或pip,但许多开发人员使用/更喜欢这些工具
现在,对于包装开发工具和不同的环境来说,这是您真正的问题。为了相同的目的,存在任何其他工具,如Buildout(http://www.buildout.org/en/latest/),为您管理的每个项目隔离您的环境Python构建系统。有一段时间我用它,但不是现在。
每个项目的独立环境,在Python中与Ruby中的相同情况略有不同。在我的情况下,我使用pyenv(https://github.com/yyuu/pyenv),就像rbenv,但对于Python。每个项目有不同版本的python和virtualenvs,在这个孤立的环境中,我可以使用pip或easy-install(如果需要的话)。