【发布时间】:2021-07-09 20:18:38
【问题描述】:
我正在尝试构建一个包含 yaml 包的容器。 但是,当我尝试导入包时,出现以下错误:
>>> import yaml
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'yaml'
当我(重新)构建 Dockerfile 时,我收到以下消息:
Step 14/25 : RUN pip install PyYAML==5.4.1
---> Running in 1e94e1d4e7e5
Requirement already satisfied: PyYAML==5.4.1 in /root/.local/lib/python3.9/site-packages (5.4.1)
对我来说,这意味着它已正确安装。
但是,当我执行 pip freeze 时,PyYaml 不存在。 我还尝试简单地将其重新安装在容器中:
pip install PyYaml
WARNING: The directory '/.cache/pip' or its parent directory is not owned or is not writable by the current user. The cache has been disabled. Check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
Defaulting to user installation because normal site-packages is not writeable
Collecting PyYaml
Downloading PyYAML-5.4.1-cp39-cp39-manylinux1_x86_64.whl (630 kB)
|████████████████████████████████| 630 kB 7.5 MB/s
Installing collected packages: PyYaml
ERROR: Could not install packages due to an OSError: [Errno 13] Permission denied: '/.local'
Check the permissions.
以下是权限:
ls -la
drwxr-xr-x 16 1270 1007 4096 Apr 13 20:16 .
drwxr-xr-x 5 1270 1007 4096 Apr 14 16:09 ..
我还尝试了以下解决方案:https://github.com/yaml/pyyaml/issues/291#issuecomment-580608091 通过添加以下命令:
#In the dockerfile :
ENV PYTHONPATH="/root/.local/lib/python3.9/site-packages (5.4.1)"
#or
#In the container
export PYTHONPATH=$PYTHONPATH:/root/.local/lib/python3.9/site-packages (5.4.1)
但我仍然有同样的错误。
这是我的 Dockerfile:
FROM python:3
RUN apt-get update
RUN apt-get install ffmpeg libsm6 libxext6 -y
RUN pip install pip --upgrade pip
RUN pip install torch==1.7.1+cu101 torchvision==0.8.2+cu101 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html
RUN pip install imageio
RUN pip install matplotlib
RUN pip install numpy
RUN pip install opencv-python
RUN pip install pandas
RUN pip install Pillow
RUN pip install scipy
RUN pip install wandb --user
RUN pip install PyYAML==5.4.1
RUN pip install addict
RUN pip install future
RUN pip install lmdb
RUN pip install requests
RUN pip install scikit-image
RUN pip install tb-nightly
RUN pip install tqdm
RUN pip install yapf
ENV PYTHONPATH="/home/GAN"
ENV PYTHONPATH="/root/.local/lib/python3.9/site-packages (5.4.1)"
WORKDIR /home/
CMD /bin/bash
我也尝试使用虚拟环境,但使用 wandb 时出现权限错误。
【问题讨论】:
-
print(sys.path)在 Python 中? -
['', '/root/.local/lib/python3.9/site-packages (5.4.1)', '/home/GAN/BasicSR-master', '/usr/ local/lib/python39.zip', '/usr/local/lib/python3.9', '/usr/local/lib/python3.9/lib-dynload', '/usr/local/lib/python3.9 /site-packages']
-
重置
PYTHONPATH不包括系统路径似乎令人担忧;删除两个ENV行有什么不同吗? -
不,它没有,当删除两个
ENV行时,它返回一个空的PYTHONPATH
标签: python docker pip yaml containers