使用 pipenv run directory/somescript.py 导致 pipenv 失败,因为它在 PATH 中查找 directory/somescript.py
$ python -V
python 3.6$ pipenv --version
masterpipenv 使用创建的 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
并将 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。
最有用的评论
@jacekjab您不能在 Docker 内部运行 pipenv shell,因为它不支持堆栈跟踪中指出的子 shell。
pipenv run
用于安装在路径上的脚本/应用程序,并指定如何使用它们。在您的情况下,我相信您正在寻找的是
pipenv run python somescript.py
或在脚本顶部添加一个shebang。