9

I have an EC2 instance running Ubuntu 18.04. I have a python Flask server implemented inside it, and I want it to start running as soon as I boot. I would like to do this with /etc/rc.local/.

When I login and run the following in order, the conda environment activates, and therefore my Flask server runs well.

cd ~
cd pult
conda activate pult
export FLASK_APP=hello.py
flask run

So this is what I wrote in /etc/rc.local. The file did not exist, so I made one.

#!/bin/bash
cd ~
cd pult
sudo ln -s /home/ubuntu/anaconda3/etc/profile.d/conda.sh /etc/profile.d/conda.sh
conda activate pult
export FLASK_APP=hello.py
flask run

And when I run /bin/bash /etc/rc.local I get this error, and the conda environment fails to activate.

CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.
If your shell is Bash or a Bourne variant, enable conda for the current user with

    $ echo ". /home/ubuntu/anaconda3/etc/profile.d/conda.sh" >> ~/.bashrc

or, for all users, enable conda with

    $ sudo ln -s /home/ubuntu/anaconda3/etc/profile.d/conda.sh /etc/profile.d/conda.sh

The options above will permanently enable the 'conda' command, but they do NOT
put conda's base (root) environment on PATH.  To do so, run

    $ conda activate

in your terminal, or to put the base environment on PATH permanently, run

    $ echo "conda activate" >> ~/.bashrc

Previous to conda 4.4, the recommended way to activate conda was to modify PATH in
your ~/.bashrc file.  You should manually remove the line that looks like

    export PATH="/home/ubuntu/anaconda3/bin:$PATH"

^^^ The above line should NO LONGER be in your ~/.bashrc file! ^^^

I also tried:

  • putting source ~/.bashrc in line 2 (running this should put conda in PATH)
  • putting export PATH="/home/ubuntu/anaconda3/bin:$PATH" in place of line 4

But they all give the same error. What should I do, so that /bin/bash /etc/rc.local will activate the conda environment?

3
  • try using source /home/ubuntu/anaconda3/etc/profile.d/conda.sh and then do conda activate pult. lemme know if this doesnt work
    – xxbinxx
    Mar 19, 2020 at 5:37
  • @xxbinxx worked like a charm! Thanks
    – Jayeon Yi
    Mar 19, 2020 at 11:41
  • I like the quality of your question btw. Very well done. I must say you've gave it a really good try
    – xxbinxx
    Mar 20, 2020 at 4:23

2 Answers 2

11

try using

source /home/ubuntu/anaconda3/etc/profile.d/conda.sh

and then do

conda activate pult

Cheers!!

1
4

For reference to future users who want to activate a conda environment in a shell script run on a remote cluster, do this by adding the following line to your shell script:

source /home/username/miniconda3/bin/activate myenv

instead of conda activate myenv.

0

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .