执行 pipfile 脚本

Executing pipfile scripts

如何执行 Pipfile 中定义的脚本?

按照找到的语法 here,我在我的 pipfile 中定义了脚本部分如下:

[scripts]
tests = "bash ./run-tests.sh"

运行$ pipenv install后,如何调用tests脚本?

我尝试了以下但没有成功:

$ tests

$ pipenv tests

$ pipenv run tests

$ pipenv shell (virtual env) $ tests

了解您的每次尝试 得到了什么,有助于排查可能出现的问题。

https://pipenv.kennethreitz.org/advanced/#custom-script-shortcuts 简要介绍了脚本,并指出您尝试 pipenv run tests 是使用 Pipfile 中的脚本的正确方法。

我遇到了同样的问题,由于 this issue 中的讨论,我碰巧解决了它。

长话短说,在开始我的项目之前,我只更新了 pipenv 全局,而不是本地。所以我还在用旧版本

正确更新您正在使用的pipenv版本,您还必须为您用于该项目的用户升级pipenv . 因此:

$ sudo pip install pipenv --upgrade --user

解决了我的问题。

愿这个愚蠢的错误成为我的第一个 SO 贡献,也是我永远的耻辱。

编辑:

Coleman Stoltze 所述,调用脚本的正确方法是:

$ pipenv run tests

试试这个:

$ pipenv shell 

$ pipenv run tests

要完全按照 Pipfile.lock 中指定的方式安装软件包, 你应该 运行:

pipenv sync

之后,要继续在 pipenv 中工作,您应该 运行:

pipenv shell

(来源:https://pipenv-fork.readthedocs.io/en/latest/advanced.html

对此的规范答案很简单:

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 等等,以这种方式您可能永远不知道哪个 site-packages 和 virtualenvs 只需输入 pipenv 就会给你。

例如,如果您在 Linux 上发出这些命令:

$ pip install --user pipenv
$ sudo pip install pipenv
$ python3 -m pip install --user --upgrade pip pipenv
$ pip3 install pipenv

您的系统中将至少安装两个 pipenv,当您输入时调用哪个 pipenv 将取决于您的操作系统如何处理这些命令以及 post 安装触发器是执行。