Я думаю, что вам лучше всего просто использовать виртуальную среду и устанавливать зависимости по мере необходимости, а затем просто регистрироваться и выходить из вашей виртуальной среды по мере продвижения вашей работы.Вы можете создавать разные виртуальные среды, работая над разными проектами, и оставлять соответствующие им файлы require.txt внутри каталога, который Python создает при установке виртуальной среды.Допустим, у меня есть python3.5.2 в качестве моего обычного пакета go-to-python (потому что я так делаю).
Использование python3.5 позволяет нам войти в виртуальную среду, в которой нет ничего, кроме голого python3.5 (без установленных зависимостей).Для этого:
[dkennetz@node venv_test]$ python -m venv my_SO_project
[dkennetz@node venv_test]$ ls
my_SO_project
Итак, Python создал каталог для размещения моей виртуальной среды, но моя виртуальная среда не используется в качестве моего Python по умолчанию.Чтобы сделать это, мы должны активировать его:
[dkennetz@node venv_test]$ source ./my_SO_project/bin/activate
Итак, моя оболочка теперь выглядит так:
(my_SO_project) [dkennetz@nodecn201 venv_test]$
Пока мы здесь, давайте посмотрим, как выглядят наши требования:
(my_SO_project) [dkennetz@nodecn201 venv_test]$ pip freeze > requirements.txt
(my_SO_project) [dkennetz@nodecn201 venv_test]$ ls -alh
drwxr-x--- 3 dkennetz blank 4.0K Oct 9 09:52 .
drwxr-x--- 93 dkennetz root 16K Oct 9 09:40 ..
drwxr-x--- 5 dkennetz blank 4.0K Oct 9 09:47 my_SO_project
-rwxr-x--- 1 dkennetz blank 0 Oct 9 09:47 requirements.txt
Использование пробела для скрытия названий групп, но, как мы видим, размер нашего файла require.txt пуст, что означает, что эта виртуальная среда не имеет зависимостей.Это чисто python3.5.Теперь давайте установим pandas и посмотрим, как меняются наши зависимости.
(my_SO_project) [dkennetz@nodecn201 venv_test]$ pip install pandas
(my_SO_project) [dkennetz@nodecn201 venv_test]$ pip freeze > requirements.txt
(my_SO_project) [dkennetz@nodecn201 venv_test]$ more requirements.txt
numpy==1.15.2
pandas==0.23.4
python-dateutil==2.7.3
pytz==2018.5
six==1.11.0
(my_SO_project) [dkennetz@nodecn201 venv_test]$ wc -l requirements.txt
5 requirements.txt
Допустим, мы написали некоторый код внутри среды и больше не хотим выполнять какую-либо работу, поэтому мы делаем одно окончательное замораживание пипса> require.txt и оставляем:
(my_SO_project) [dkennetz@nodecn201 venv_test]$ deactivate
[dkennetz@nodecn201 venv_test]$ pip freeze > requirements_normal.txt
[dkennetz@nodecn201 venv_test]$ wc -l requirements_normal.txt
82 requirements_normal.txt
Появилось гораздо больше зависимостей, но ничего не изменилось в нашей обычной среде, и ничего не изменилось в нашей виртуальной среде.Теперь давайте предположим, что мы взяли остаток выходного дня и хотим вернуться к нашему SO_project, который мы создали вчера.Ну, это легко:
[dkennetz@nodecn201 venv_test]$ ls -alh
drwxr-x--- 3 dkennetz blank 4.0K Oct 9 10:01 .
drwxr-x--- 93 dkennetz root 16K Oct 9 09:40 ..
drwxr-x--- 5 dkennetz blank 4.0K Oct 9 09:47 my_SO_project
-rwxr-x--- 1 dkennetz blank 77 Oct 9 09:56 requirements.txt
-rwxr-x--- 1 dkennetz blank 1.3K Oct 9 10:01 requirements_normal.txt
[dkennetz@nodecn201 venv_test]$ source ./my_SO_project/bin/activate
(my_SO_project) [dkennetz@nodecn201 venv_test]$
Давайте посмотрим, где мы остановились (у нас должны быть установлены только панды, давайте перезапишем наш старый файл_приятий):
(my_SO_project) [dkennetz@nodecn201 venv_test]$ pip freeze > requirements.txt
(my_SO_project) [dkennetz@nodecn201 venv_test]$ more requirements.txt
numpy==1.15.2
pandas==0.23.4
python-dateutil==2.7.3
pytz==2018.5
six==1.11.0
Классно, теперь мы знаеммы просто там, где мы остановились.Просто честное предупреждение, у меня есть установленный pandas в моем корневом пакете python, но чего у меня нет, так это awscli (интерфейс командной строки веб-сервисов amazon).Допустим, я хочу этого по какой-то причине в моем пакете:
(my_SO_project) [dkennetz@nodecn201 venv_test]$ pip install awscli
(my_SO_project) [dkennetz@nodecn201 venv_test]$ pip freeze > requirements.txt
(my_SO_project) [dkennetz@nodecn201 venv_test]$ wc -l requirements.txt
15 requirements.txt
(my_SO_project) [dkennetz@nodecn201 venv_test]$ deactivate
[dkennetz@nodecn201 venv_test]$ ls
my_SO_project requirements.txt requirements_normal.txt
[dkennetz@nodecn201 venv_test]$ pip freeze > requirements_normal.txt
[dkennetz@nodecn201 venv_test]$ wc -l requirements_normal.txt
82 requirements_normal.txt
Итак, теперь мы видим, что установка awscli не внесла изменений в наш пакет python, но она сделала для нашего venv:
[dkennetz@nodecn201 venv_test]$ more requirements_normal.txt
appdirs==1.4.3
arrow==0.7.0
attrdict==2.0.0
avro-cwl==1.8.4
...
[dkennetz@nodecn201 venv_test]$ more requirements.txt
awscli==1.16.29
botocore==1.12.19
colorama==0.3.9
docutils==0.14
...
Наконец, скажем, вы разработали супер крутой пакет данных для науки полностью внутри вашей виртуальной машины и сделали его пригодным для установки на pip.Это просто и быстро:
[dkennetz@nodecn201 venv_test]$ pip install -r requirements.txt
Теперь вы можете использовать это в качестве списка пакетов каждый раз, когда ваша «новая программа» устанавливается в pip, и, что еще лучше, вы знаете каждый необходимый вам пакет pythonпотому что это единственные, которые вы включили в свою среду.
При всем этом, нет никаких причин, по которым вы не можете делать это каждый раз, когда начинаете новый проект с новыми людьми.И если вы хотите использовать anaconda в каждой виртуальной среде, которую вы когда-либо используете, установите anaconda обычным образом:
[dkennetz@nodecn201 venv_test]$ ./Anaconda-1.6.0-Linux-x86_64.sh
[dkennetz@nodecn201 venv_test]$ source /home/dkennetz/anaconda3/bin/activate
#You will be in your anaconda environment now
(base) [dkennetz@nodecn201 venv_test]$ pip freeze > anaconda_reqs.txt
Допустим, вы запустили my_SO_project2 сейчас, после того первого, и вы хотите убедиться, что у вас есть anaconda в этомпакет.создайте свой новый venv так же, как в прошлый раз.Оказавшись внутри, просто установите все зависимости, которые требуются anaconda, и у вас будет свежая виртуальная среда anaconda:
(my_SO_project2) [dkennetz@nodecn201 venv_test]$ pip install -r anaconda_reqs.txt
И ваш новый venv начнет работать как свежая среда, в которой не установлено ничего, кроме anaconda.
Iнадеюсь, это прояснит то, что я сказал в комментариях, и будет полезно для вас.