как активировать виртуальную среду в оболочке python - PullRequest
0 голосов
/ 11 февраля 2019

Я создал виртуальную среду (каталог env ) и установил некоторые сторонние пакеты.Я работаю с Mac OSX.Как мне активировать свой venv в python интерактивной оболочке ?Я попытался

source env/bin/activate

и получил сообщение об ошибке: SyntaxError: invalid syntax

Я видел, как некоторые из них опубликовали этот вопрос 8 лет назад, но я не нашел того, что искал ... Я также проверил документацию по Python, но мне не ясно, как его активировать

https://docs.python.org/3/tutorial/venv.html?highlight=virtual

Кто-нибудь может помочь?

1 Ответ

0 голосов
/ 11 февраля 2019

Обычно в вашей оболочке python указывает на экземпляр Python по умолчанию:

python

Python 2.7.14 (default, Sep 25 2017, 09:53:22)
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.37)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

Это потому, что python находится в /usr/local/bin, что является частью вашего значения по умолчанию PATH.Теперь, когда вы source activate <some_env>, вы изменяете PATH, что вы можете увидеть в файле /path/to/venv/some_env/bin/activate:

#!/bin/bash

...

    if [[ $PATH == *"CONDA_PATH_PLACEHOLDER"* ]]; then
        # If it did, replace it with our _NEW_PART
        export PATH="$($_CONDA_PYTHON -c "import re; print(re.sub(r'CONDA_PATH_PLACEHOLDER', r'$_NEW_PART', '$PATH', 1))")"
    else

        #### HERE IS WHERE THAT PATH IS OVERWRITTEN

        export PATH="$_NEW_PART:$PATH"
    fi

    # CONDA_DEFAULT_ENV is the shortest representation of how conda recognizes your env.
    #    It can be an env name, or a full path.
    #    Last date of change: 2016-06-21
    # If the string contains / it's a path
    if [[ "$@" == */* ]]; then
        export CONDA_DEFAULT_ENV=$(get_abs_filename "$args")
    else
        export CONDA_DEFAULT_ENV="$args"
    fi
...
esac

Я использую анаконду, но концепциято же самое, а ... указывает, где я вырезал части скрипта.Он эффективно экспортирует исполняемый путь venv python в PATH.Таким образом, вы не будете указывать на ваш venv python, если не возникнет одно из двух условий: a) вы явно вызываете этот исполняемый файл python или b) вы source activate myenv и затем вызываете python.

Итак, правильный рабочий процесс:

source /path/to/myenv/bin/activate myenv

Затем вызовите python

Например, первый вызов $PATH равен до активация моего conda env, вторая после:

➜  ~ echo $PATH
/Users/mm92400/bin:/usr/local/bin:/Users/mm92400/anaconda3/bin:/Users/mm92400/.cargo/bin:/Library/Frameworks/Python.framework/Versions/3.6/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Frameworks/Mono.framework/Versions/Current/Commands
➜  ~ source activate py36
(py36) ➜  ~ echo $PATH
/Users/mm92400/anaconda3/envs/py36/bin:/Users/mm92400/bin:/usr/local/bin:/Users/mm92400/anaconda3/bin:/Users/mm92400/.cargo/bin:/Library/Frameworks/Python.framework/Versions/3.6/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Frameworks/Mono.framework/Versions/Current/Commands

обратите внимание, как $PATH отличается

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...