如何执行 Pipfile 中定义的脚本?
按照此处找到的语法,我在 pipfile 中定义了脚本部分,如下所示:
[scripts]
tests = "bash ./run-tests.sh"
运行$ pipenv install
后,如何调用tests
脚本?
我尝试了以下方法但没有成功:
$ tests
$ pipenv tests
$ pipenv run tests
$ pipenv shell (virtual env) $ tests
我遇到了同样的问题,由于这个问题的讨论,我碰巧解决了它。
长话短说,在开始我的项目之前,我只在全球范围内更新了pipenv,而不是本地。所以我仍然使用旧版本。
要正确更新您正在使用的pipenv
版本,您还必须为用于项目的用户升级pipenv
。 因此:
$ sudo pip install pipenv --upgrade --user
解决了我的问题。
愿这个愚蠢的错误是我的第一个SO贡献,也是我永远的耻辱。
编辑:
正如Coleman Stoltze所指出的,调用脚本的正确方法是:
$ pipenv run tests
试试这个:
$ pipenv shell
$ pipenv run tests
对此的规范答案很简单:
pipenv run tests
您的 Pipfile 的语法是正确的,这是运行脚本的唯一方法。
如果pipenv run tests
不起作用,则您的设置有其他问题。
确保您在某个时候曾经运行过pipenv install
,您可以安全地再次运行它以确保,或者如果您需要再次锁定和同步,则可以pipenv update
。
还要确保当你在 shell 中键入pipenv
时,你使用的是正确的 pipenv。一些 Python 设置最终会迫使您像以下方式之一一样调用它:
$ pipenv
$ python3 -m pipenv
$ pyenv exec python -m pipenv
$ ~/.local/bin/pipenv
发生这种情况是因为大多数用户可能而且可能拥有多个python解释器,多个pip,多个pipenv等等,以这样的方式,您可能永远不知道只需键入pipenv
即可为您提供哪些站点包和virtualenv。
例如,如果在 Linux 上发出以下命令:
$ pip install --user pipenv
$ sudo pip install pipenv
$ python3 -m pip install --user --upgrade pip pipenv
$ pip3 install pipenv
您的系统中至少有两个 pipenv 安装,当您键入pipenv
时调用哪一个将取决于您的操作系统如何处理这些命令以及执行了哪些安装后触发器。
要完全按照 Pipfile.lock 中指定的方式安装软件包, 您应该运行:
pipenv sync
之后,要继续在pipenv中工作,您应该运行:
pipenv shell
(来源:https://pipenv-fork.readthedocs.io/en/latest/advanced.html)
了解每次尝试帮助解决可能出现的问题会很有帮助。
https://pipenv.pypa.io/en/latest/advanced/#custom-script-shortcuts 简要介绍了脚本,并指出您尝试pipenv run tests
是使用 Pipfile 中的脚本的正确方法。