Als ich "conda install hogehoge" gemacht habe, wurde ein ungeplantes Paket (oder "Python") aktualisiert und das Ganze ist gestorben, also werde ich nach einem Memorandum eine Gegenmaßnahme schreiben.
Was ich tun wollte: Ich wollte mein eigenes Image erstellen, indem ich mehrere Bibliotheken hinzufügte, die auf dem Docker-Image von pytorch
basierten.
Was ich getan habe: Ich habe "conda install" gehorsam in "Dockerfile" geschrieben Was ist passiert: Die Version von "Python" hat sich zum Zeitpunkt der "Conda-Installation" geändert, und die Conda-Umgebung wurde beschädigt und konnte nicht ordnungsgemäß verwendet werden.
Genin: Nichtübereinstimmung zwischen den Versionen "conda" und "python"
Was ich tun musste (Fazit): Schreiben Sie, was Sie reparieren möchten, in eine Datei namens pinned
(diesmal gelöst mit python == 3.6. *
)
(Oder geben Sie die "conda" an, die mit der aktualisierten Version von "python" übereinstimmt. Diesmal nicht ausgeführt.
Is it possible to lock versions of packages in Anaconda? - Stack Overflow How to pin Conda | Damian's blog Hinweise zum Ändern der Python-Version von conda --Qiita
Ich habe das folgende "Dockerfile" geschrieben (das alte Originalbild, das ich verwende, kann Teil des Problems sein ...).
FROM pytorch/pytorch:0.4.1-cuda9-cudnn7-devel
RUN apt update && apt upgrade -y
#Dies wird später ein Problem sein
# joblib etc
RUN conda install -y \
joblib \
matplotlib \
scikit-learn \
tqdm
Dann bauen.
$ docker build -t mypytorch .
Zu diesem Zeitpunkt zeigte conda install
diese als zu aktualisierende Pakete an (der Teil, der später ein Problem sein wird).
The following packages will be UPDATED:
ca-certificates: 2018.03.07-0 --> 2020.1.1-0
certifi: 2018.4.16-py36_0 --> 2019.11.28-py38_0
freetype: 2.9.1-h8a8886c_0 --> 2.9.1-h8a8886c_1
libedit: 3.1.20170329-h6b74fdf_2 --> 3.1.20181209-hc058e9b_0
libgcc-ng: 7.2.0-hdf63c60_3 --> 9.1.0-hdf63c60_0
libpng: 1.6.34-hb9fc6fc_0 --> 1.6.37-hbc83047_0
libstdcxx-ng: 7.2.0-hdf63c60_3 --> 9.1.0-hdf63c60_0
mkl: 2018.0.3-1 --> 2020.0-166
mkl_fft: 1.0.4-py36h4414c95_0 --> 1.0.15-py38ha843d7b_0
mkl_random: 1.0.1-py36h4414c95_1 --> 1.1.0-py38h962f231_0
ncurses: 6.1-hf484d3e_0 --> 6.2-he6710b0_0
numpy: 1.14.5-py36h1b885b7_4 --> 1.18.1-py38h4f9e942_0
numpy-base: 1.14.5-py36hdbf6ddf_4 --> 1.18.1-py38hde5b4d6_1
openssl: 1.0.2o-h20670df_0 --> 1.1.1d-h7b6447c_4
pip: 10.0.1-py36_0 --> 20.0.2-py38_1
python: 3.6.5-hc3d631a_2 --> 3.8.1-h0371630_1
readline: 7.0-ha6073c6_4 --> 7.0-h7b6447c_5
scipy: 1.1.0-py36hc49cb51_0 --> 1.4.1-py38h0b6359f_0
setuptools: 39.2.0-py36_0 --> 45.2.0-py38_0
six: 1.11.0-py36h372c433_1 --> 1.14.0-py38_0
sqlite: 3.23.1-he433501_0 --> 3.31.1-h7b6447c_0
tk: 8.6.7-hc745277_3 --> 8.6.8-hbc83047_0
wheel: 0.31.1-py36_0 --> 0.34.2-py38_0
zlib: 1.2.11-ha838bed_2 --> 1.2.11-h7b6447c_3
Jetzt, wo der Bau beendet ist, werde ich triumphierend einen Container bauen.
$ docker run -it --rm mypytorch bash
Wenn ich versuche, Befehle vom Typ "conda" im Container zu verwenden, funktioniert dies nicht.
root@ce88f6b1ba73:/workspace# conda
Traceback (most recent call last):
File "/opt/conda/bin/conda", line 7, in <module>
from conda.cli import main
ModuleNotFoundError: No module named 'conda'
Andere ipython
funktionieren nicht oder es kann nicht geholfen werden. Selbst wenn Sie es wie folgt mit python
versuchen, funktioniert es nicht.
root@ce88f6b1ba73:/workspace# python
Python 3.8.1 (default, Jan 8 2020, 22:29:32)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'torch'
>>>
Also habe ich ein Bild von etwas erstellt, das ich bewegen möchte, aber nichts, das sich bewegt.
Das war das Problem. Die Version von python
wurde auf 3.8.1 aktualisiert.
The following packages will be UPDATED:
...
python: 3.6.5-hc3d631a_2 --> 3.8.1-h0371630_1
...
Es scheint, dass es nicht funktioniert, wenn nur "Python" aktualisiert wird, ohne die Version von "conda" zu ändern. Es gibt zwei Möglichkeiten, dies zu lösen.
conda
und python
zusammenpython
Dieses Mal werden wir die Version reparieren. Um die Version zu reparieren, schreiben Sie, was Sie in "conda-meta / pinned" korrigieren möchten, in das Verwaltungsverzeichnis von anaconda / miniconda (wie es behandelt wird, wenn mehrere Umgebungen erstellt werden, wurde nicht überprüft).
Da python
diesmal auf die 3.6-Serie festgelegt ist, sieht es wie folgt aus (hier ist das Installationsziel / opt
. Dies hängt von Ihrer Umgebung ab).
$ echo "python=3.6.*" >> /opt/conda/conda-meta/pinned
Es wird funktionieren, wenn dies in der Docker-Datei ist. Mit anderen Worten wird es wie folgt.
FROM pytorch/pytorch:0.4.1-cuda9-cudnn7-devel
RUN apt update && apt upgrade -y
#Pin-Version vor der Installation von Conda
RUN echo "python=3.6.*" >> /opt/conda/conda-meta/pinned
# joblib etc
RUN conda install -y \
joblib \
matplotlib \
scikit-learn \
tqdm
Ich denke nicht, dass es ein Unfall ist, der sehr oft passiert, aber ich hoffe, es hilft jemandem.
Recommended Posts