执行 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 安装触发器是执行。
如何执行 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 安装触发器是执行。