Я пытаюсь создать образ и рецепт сингулярности, которые создадут среду anaconda, а затем активируют указанную среду, чтобы я мог построить колесо python проекта в этой среде, чтобы оно было на 100% установлено и функционировало после завершения сборки сингулярности.
Bootstrap: docker
From: nvidia/cuda:9.0-cudnn7-devel-ubuntu16.04
%environment
# use bash as default shell
SHELL=/bin/bash
# add CUDA paths
CPATH = "/usr/local/cuda/include:$CPATH"
PATH = "/usr/local/cuda/bin:$PATH"
LD_LIBRARY_PATH = "/usr/local/cuda/lib64:$LD_LIBRARY_PATH"
CUDA_HOME = "/usr/local/cuda"
# add Anaconda path
PATH = "/usr/local/anaconda3/bin:$PATH"
export PATH LD_LIBRARY_PATH CPATH CUDA_HOME
export MKL_NUM_THREADS=1
export OPENBLAS_NUM_THREADS=1
%setup
# runs on host
# the path to the image is $SINGULARITY_ROOTFS
%post
# post-setup script
# load environment variables
. /environment
# use bash as default shell
echo "\n #Using bash as default shell \n" >> /environment
echo 'SHELL=/bin/bash' >> /environment
# make environment file executable
chmod +x /environment
# default mount paths
mkdir /scratch /data
#Add CUDA paths
echo "\n #Cuda paths \n" >> /environment
echo 'export CPATH = "/usr/local/cuda/include:$CPATH"' >> /environment
echo 'export PATH = "/usr/local/cuda/bin:$PATH"' >> /environment
echo 'export LD_LIBRARY_PATH = "/usr/local/cuda/lib64:$LD_LIBRARY_PATH"' >> /environment
echo 'export CUDA_HOME = "/usr/local/cuda"' >> /environment
# updating and getting required packages
apt-get update
apt-get install -y wget git vim build-essential cmake
# creates a build directory
mkdir build
cd build
# download and install Anaconda
CONDA_INSTALL_PATH = "/usr/local/anaconda3"
wget https://repo.continuum.io/archive/Anaconda3-5.0.1-Linux-x86_64.sh
chmod +x Anaconda3-5.0.1-Linux-x86_64.sh
./Anaconda3-5.0.1-Linux-x86_64.sh -b -p $CONDA_INSTALL_PATH
# download and install CaImAn
git clone https://github.com/flatironinstitute/CaImAn.git
cd CaImAn
conda env create -n caiman -f environment.yml
source activate caiman
pip install .
caimanmanager.py install
source deactivate
%runscript
# executes with the singularity run command
# delete this section to use existing docker ENTRYPOINT command
%test
# test that script is a success
Я пробовал как conda activate
, так и source activate
и получаю ту же ошибку для обоих.
+ source activate caiman
/bin/sh: 41: source: not found
ABORT: Aborting with RETVAL=255
Cleaning up...
Это просто то, что я должен сделать потом, сделав изображение доступным для записи? Это было бы следующим решением по умолчанию, но было бы неплохо, если бы рецепт мог просто работать.
*Редактировать 1
. activate caiman
возвращается.
+ . activate caiman
+ [[ -n ]]
/bin/sh: 4: /usr/local/anaconda3/bin/activate: [[: not found
+ [[ -n ]]
/bin/sh: 7: /usr/local/anaconda3/bin/activate: [[: not found
+ echo Only bash and zsh are supported
Only bash and zsh are supported
+ return 1
ABORT: Aborting with RETVAL=255
Cleaning up...
* Редактировать 2 При использовании более новой версии Anaconda ошибка не найдена исчезает. Все, что я сделал, это изменил дистрибутив Anaconda, который я получил с помощью wget, а также принудительно обновил его, чтобы быть вдвойне уверенным.
# download and install Anaconda
CONDA_INSTALL_PATH = "/usr/local/anaconda3"
wget https://repo.continuum.io/archive/Anaconda3-5.3.1-Linux-x86_64.sh
chmod +x Anaconda3-5.3.1-Linux-x86_64.sh
./Anaconda3-5.3.1-Linux-x86_64.sh -b -p $CONDA_INSTALL_PATH
conda update -n base -c defaults conda
pip install --upgrade pip
Да, это было следующее, что я попробовал, и на этом тоже не было костей, он вернул ту же ошибку. Хорошо, пришло время спросить людей Anaconda.
Если я не ошибаюсь (что вполне возможно), то же самое происходит и с virtualenv.
Проблема в том, что источник не является командой, попробуйте:
. activate caiman
вместо
source activate caiman
Редактирование после обновленного вопроса, проверьте этот https://github.com/conda/conda/issues/6639, возможно, вы захотите выяснить, что делает ваша активация (кажется, ищет несуществующие файлы)
Итак, после замены source activate caiman
на . activate caiman
я получаю следующую ошибку. + . activate caiman + [[ -n ]] /bin/sh: 4: /usr/local/anaconda3/bin/activate: [[: not found + [[ -n ]] /bin/sh: 7: /usr/local/anaconda3/bin/activate: [[: not found + echo Only bash and zsh are supported Only bash and zsh are supported + return 1 ABORT: Aborting with RETVAL=255 Cleaning up...
Ну вот и ответил на твой вопрос, ты сейчас в очередном баге, но источник решается. Я бы сказал: 1 — не меняйте вопрос, потому что мы не можем запустить сеанс отладки. 2- проверьте свой путь, так как он, похоже, не находит там активацию (вы можете изменить .