由于在根目录中运行pipenv install
时的行为更改,我们的docker构建今天上午失败。
当使用最新版本(2020.5.28)运行时,在生成并安装依赖项后会引发错误ERROR: Pipenv is not intended to work under the root directory, please choose another path.
看起来这是#3386中引入的更改,与#3434中引发的问题有关。
这个问题实际上只是在指出该行为更改应列为更改日志中的中断,因为当前似乎未提及它。
目前,我们通过将pipenv
到最新版本(2018.11.26)来解决此问题。
不适用
不适用
不适用
嗨@ gps035 ,
我在pipenv中遇到了同样的问题。
您能否显示您如何固定pipenv
版本?
谢谢
我可以确认版本2018.11.26
不会发生这种现象。
@mohamedMok您可以使用pip install 'pipenv==2018.11.26'
,这是没有重大更改的最新版本。
@ gps035是否有可能发送PR在CHANGELOG中提及它?
我已经提交了PR来解决此问题,谢谢大家。
这不是一个有趣的突破性变化,我们所有的docker在构建期间都使用pipenv install:/
遇到相同的问题,使用https://github.com/pypa/pipenv/issues/4273#issuecomment -635303079中的修复为我工作。
由于在根目录中运行
pipenv install
时的行为更改,我们的docker构建今天上午失败。
您能否在这里解释工作流程-您是否使用--system
?
正如我在#4275中提到的:
首先发生变化的主要原因是由于找到了虚拟环境和相关的python路径-据我所知,这是导致错误和损坏的主要原因,并且基本上不起作用。 它破坏工作流程的事实是我第一次听说它可以正常工作。
这并不是要进行重大更改,而是要防止以前发生的交互中断-对于正在为此工作的任何人,请提供您要传递给pipenv的全套命令行参数(例如pipenv install --<whatever>
以及有关您的工作流程的信息:
--system
传递给pipenv,创建自己的virtualenv还是允许pipenv为您创建一个虚拟环境?那可能已经足够了
@techalchemy这是我们Dockerfile的不再起作用的相关部分。
FROM python:3.8
RUN pip install --no-cache-dir pipenv
RUN pipenv install --system --deploy
@techalchemy感谢您拉票的用例。 这是另一个例子:
--system
标志未通过如果这对于调查或重现问题很有用,则可以在此Make目标中看到构建步骤。
对于想要将最新的pipenv与--system
一起使用的人,通过设置WORKDIR并将其Pipfile / lockfile如下复制来适应Dockerfile可能会有所帮助:
WORKDIR /code
COPY Pipfile Pipfile.lock /code/
RUN pip install pipenv && pipenv install --system
COPY . /code/
python:3-slim
码头工人镜像,带有Debian GNU/Linux 10
FROM python:3-slim AS base
ENV PYROOT /pyroot
ENV PYTHONUSERBASE $PYROOT
ENV PATH $PATH:$PYROOT/bin
FROM base AS builder
RUN pip install pipenv
COPY Pipfile* ./
RUN PIP_USER=1 PIP_IGNORE_INSTALLED=1 pipenv install --system --deploy --ignore-pipfile
对于想要将最新的pipenv与
--system
一起使用的人,通过设置WORKDIR并将其Pipfile / lockfile如下复制来适应Dockerfile可能会有所帮助:WORKDIR /code COPY Pipfile Pipfile.lock /code/ RUN pip install pipenv && pipenv install --system COPY . /code/
这对我有用。 只要记得之前创建/code
目录即可。
这对我有用。 只要记得之前创建
/code
目录即可。
如果该目录不存在,则WORKDIR命令
使用WORKDIR
对我不起作用。 我遇到错误
Step 9/9 : RUN PIP_USER=1 PIP_IGNORE_INSTALLED=1 pipenv install --system --deploy --ignore-pipfile
---> Running in da6fa387210f
Installing dependencies from Pipfile.lock (387af5)…
Failed to load paths: /bin/sh: 1: /root/.local/share/virtualenvs/build-5NmaZ4l5/bin/python: not found
Output:
Failed to load paths: /bin/sh: 1: /root/.local/share/virtualenvs/build-5NmaZ4l5/bin/python: not found
Output:
Failed to load paths: /bin/sh: 1: /root/.local/share/virtualenvs/build-5NmaZ4l5/bin/python: not found
Output:
^Cmake: *** [build-image-base] Interrupt: 2
在下面使用dockerfile时
FROM python:3-slim AS base
ENV PYROOT /pyroot
ENV PYTHONUSERBASE $PYROOT
ENV PATH $PATH:$PYROOT/bin
FROM base AS builder
WORKDIR /build
RUN pip install pipenv
COPY Pipfile* /build/
RUN PIP_USER=1 PIP_IGNORE_INSTALLED=1 pipenv install --system --deploy --ignore-pipfile
这似乎实际上不是构建错误,请参阅#4220
附带说明, $PIP_USER
被pipenv取消设置,并且我相对不确定$PYTHONUSERBASE
与之交互
同样, --deploy
标志与--ignore-pipfile
--deploy
标志将毫无意义- --deploy
用于保证您的Pipfile
和Pipfile.lock
是对齐的,即您的Pipfile.lock
是从相应的Pipfile
。 如果您指示要忽略您的pipfile,则永远不会进行此检查。
无论如何, @ killuazhu中包含的日志中的错误都可能与python路径的操作有关,但是如果您可以提出单独的问题,则需要进一步调查
作为参考,当一个人尝试在没有Pipfile的/
下尝试pipenv install
时,就会出现#3434的原始问题。 而在这张票的设置是pipenv install
下/
用Pipfile,这以前是在2018年11月26日的工作。 但是,#3386选择了错误的解析方法,该方法完全阻止了从根目录的使用。
感谢您进行修复,您是否有关于何时将新版本pypi软件包中包含此修复程序的ETA?
我们需要确保所有回归问题均已解决,新版本将在下周发布
太棒了,谢谢!
我可以确认版本
2018.11.26
不会发生这种现象。@mohamedMok您可以使用
pip install 'pipenv==2018.11.26'
,这是没有重大更改的最新版本。
运行python3 -m pipenv install --three --system
时出现一个略有不同的错误
Output:
Failed to load paths: /bin/sh: 1: /root/.local/share/virtualenvs/app-4PlAip0Q/bin/python: not found
固定到旧版本也对我有用。 谢谢!
我可以确认版本
2018.11.26
不会发生这种现象。
@mohamedMok您可以使用pip install 'pipenv==2018.11.26'
,这是没有重大更改的最新版本。运行
python3 -m pipenv install --three --system
时出现一个略有不同的错误Output: Failed to load paths: /bin/sh: 1: /root/.local/share/virtualenvs/app-4PlAip0Q/bin/python: not found
固定到旧版本也对我有用。 谢谢!
我有同样的问题。 现在固定到旧版本作为解决方法
我们需要确保所有回归问题均已解决,新版本将在下周发布
2020.6.2版本中仍然存在此问题:
输出:
无法加载路径:/ bin / sh:1:/root/.local/share/virtualenvs/app-lp47FrbD/bin/python:找不到
您能否确认此问题是否有望在2020.6.2版本中解决?
我可以确认我使用以下Dockerfile
解决此问题
FROM python:3.7-slim
ENV LC_ALL C.UTF-8
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && \
apt-get upgrade && \
apt-get install -y --no-install-recommends libldap2-dev libsasl2-dev libssl-dev && \
apt-get clean autoclean && rm -rf /var/lib/apt/* /var/cache/apt/* && \
apt-get autoremove --purge && \
pip install pipenv --no-cache-dir
WORKDIR /app
COPY Pipfile Pipfile.lock ./
RUN pipenv install --deploy --system --verbose
ENTRYPOINT ["uvicorn", "web.main:app", "--host", "0.0.0.0"]
EXPOSE 8000/tcp
@frostming您能否重新打开问题?
我还可以确认使用以下Dockerfile遇到了这个问题:
FROM python:3.7.6-slim-stretch
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
WORKDIR /app
COPY . /app
RUN pip install --upgrade pip
RUN pip install pipenv
RUN pipenv install --system --deploy --ignore-pipfile
CMD ["/bin/bash", "scripts/entrypoint.sh"]
这是错误:
Step 10/11 : RUN pipenv install --system --deploy --ignore-pipfile
---> Running in 00386bcedd89
Installing dependencies from Pipfile.lock (d14b54)…
Failed to load paths: /bin/sh: 1: /root/.local/share/virtualenvs/app-4PlAip0Q/bin/python: not found
Output:
Failed to load paths: /bin/sh: 1: /root/.local/share/virtualenvs/app-4PlAip0Q/bin/python: not found
Output:
Failed to load paths: /bin/sh: 1: /root/.local/share/virtualenvs/app-4PlAip0Q/bin/python: not found
对于仍然遇到此问题的人们,最简单的解决方法是将Dockerfile配置为:
FROM python:3.7-slim
# Set environment varibles
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
# Set work directory
WORKDIR /code
# Install dependencies
COPY Pipfile Pipfile.lock /code/
RUN pip install pipenv==2018.11.26 && pipenv install --system # <- this is the fix
...
最有用的评论
我可以确认版本
2018.11.26
不会发生这种现象。@mohamedMok您可以使用
pip install 'pipenv==2018.11.26'
,这是没有重大更改的最新版本。