Pipenv: 在docker构建期间无法通过pipenv运行单个python脚本

创建于 2018-02-02  ·  3评论  ·  资料来源: pypa/pipenv

使用 pipenv run directory/somescript.py 导致 pipenv 失败,因为它在 PATH 中查找 directory/somescript.py

描述你的环境
  1. 操作系统类型 Ubuntu
  2. Python 版本: $ python -V python 3.6
  3. Pipenv 版本: $ pipenv --version master
预期结果

pipenv 使用创建的 virtualn 环境运行脚本

实际结果

步骤 26/29:运行 ls $PROJECT_PATH | grep setup.py
---> 在 7811236ec5ee 中运行
设置文件
移除中间容器 7811236ec5ee
---> ba280fab02c3
步骤 27/29:运行 pipenv run $PROJECT_PATH/setup.py develop
---> 在 b48df28fbe12 中运行
错误:在 PATH 中找不到命令 /opt/project/setup.py。

复制步骤

从 dockerfile 中提取:
运行 ls $PROJECT_PATH | grep setup.py
运行 pipenv 运行 $PROJECT_PATH/setup.py develop

最有用的评论

@jacekjab您不能在 Docker 内部运行 pipenv shell,因为它不支持堆栈跟踪中指出的子 shell。 pipenv run用于安装在路径上的脚本/应用程序,并指定如何使用它们。

在您的情况下,我相信您正在寻找的是pipenv run python somescript.py或在脚本顶部添加一个shebang。

所有3条评论

并将 Dockerfile 更改为:

ENV SHELL=/bin/bash
RUN pipenv shell -c "$PROJECT_PATH/setup.py develop; exit $?"

结果是

Spawning environment shell (/bin/bash). Use 'exit' to leave.
Traceback (most recent call last):
  File "/usr/local/bin/pipenv", line 11, in <module>
    load_entry_point('pipenv==9.0.3', 'console_scripts', 'pipenv')()
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/pipenv/cli.py", line 2204, in shell
    do_shell(three=three, python=python, fancy=fancy, shell_args=shell_args)
  File "/usr/local/lib/python3.6/site-packages/pipenv/cli.py", line 2167, in do_shell
    c.interact(escape_character=None)
  File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/pexpect/pty_spawn.py", line 744, in interact
    mode = tty.tcgetattr(self.STDIN_FILENO)
termios.error: (25, 'Inappropriate ioctl for device')

我想您可能可以通过以下方式实现: pipenv run python -c "import this" (只需用您的逻辑替换import this )。

@jacekjab您不能在 Docker 内部运行 pipenv shell,因为它不支持堆栈跟踪中指出的子 shell。 pipenv run用于安装在路径上的脚本/应用程序,并指定如何使用它们。

在您的情况下,我相信您正在寻找的是pipenv run python somescript.py或在脚本顶部添加一个shebang。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

erinxocon picture erinxocon  ·  3评论

jeyraof picture jeyraof  ·  3评论

marc-fez picture marc-fez  ·  3评论

ipmb picture ipmb  ·  3评论

hynek picture hynek  ·  3评论