Диагностика несоответствия в поведении virtualenv в аналогичных установках Python

#python-2.7 #virtualenv

#python-2.7 #virtualenv

Вопрос:

Я сравниваю виртуальные среды между двумя устаревшими Python 2.7.12 установками на двух отдельных Ubuntu 16.04 серверах.

Первый есть Ubuntu 16.04.7 LTS , второй есть Ubuntu 16.04.6 LTS .

Оба работают с проектами Django в виртуальных средах.

Этот вопрос касается того, как виртуальные среды ведут себя по-разному в двух вышеупомянутых установках. Мне нужно понять и устранить этот поведенческий пробел.


Когда я создаю виртуальную среду в предыдущей установке, результат, который я вижу, выглядит следующим образом:

 created virtual environment CPython2.7.12.final.0-64 in 113ms
  creator CPython2Posix(dest=/home/ubuntu/.virtualenvs/test, clear=False, no_vcs_ignore=False, global=False)
  seeder FromAppData(download=False, pip=bundle, wheel=bundle, setuptools=bundle, via=copy, app_data_dir=/home/ubuntu/.local/share/virtualenv)
    added seed packages: pip==20.3.1, setuptools==44.1.1, wheel==0.36.1
  activators PythonActivator,CShellActivator,FishActivator,PowerShellActivator,BashActivator
virtualenvwrapper.user_scripts creating /home/ubuntu/.virtualenvs/test/bin/predeactivate
virtualenvwrapper.user_scripts creating /home/ubuntu/.virtualenvs/test/bin/postdeactivate
virtualenvwrapper.user_scripts creating /home/ubuntu/.virtualenvs/test/bin/preactivate
virtualenvwrapper.user_scripts creating /home/ubuntu/.virtualenvs/test/bin/postactivate
virtualenvwrapper.user_scripts creating /home/ubuntu/.virtualenvs/test/bin/get_env_details
 

Когда я создаю виртуальную среду в последней установке, результат, который я вижу, выглядит следующим образом:

 New python executable in /home/ubuntu/.virtualenvs/test/bin/python
Installing setuptools, pip, wheel...
done.
virtualenvwrapper.user_scripts creating /home/ubuntu/.virtualenvs/test/bin/predeactivate
virtualenvwrapper.user_scripts creating /home/ubuntu/.virtualenvs/test/bin/postdeactivate
virtualenvwrapper.user_scripts creating /home/ubuntu/.virtualenvs/test/bin/preactivate
virtualenvwrapper.user_scripts creating /home/ubuntu/.virtualenvs/test/bin/postactivate
virtualenvwrapper.user_scripts creating /home/ubuntu/.virtualenvs/test/bin/get_env_details
 

В основном первые несколько строк обоих выходных данных отличаются. Как дела?


Затем, когда я посещаю ~/.virtualenvs/test/lib/python2.7 предыдущую установку, я вижу несколько файлов:

введите описание изображения здесь

Тем не менее, я вижу гораздо больше файлов при посещении ~/.virtualenvs/test/lib/python2.7 последней установки. В частности:

введите описание изображения здесь


Мои вопросы:

  1. Почему обе виртуальные среды инициализируются по-разному, когда базовые версии Python одинаковы?
  2. Я хочу воспроизвести результаты последней установки в предыдущей установке. Как мне это настроить?

Я спрашиваю об этом, потому что есть celery supervisor установка, которая отлично работает в последней среде, но не работает в первой. Мне нужно диагностировать и исправить этот сбой.

В случае, если это имеет значение, эта ошибка сбоя выглядит следующим образом:

     load_host_site()
  File "/home/ubuntu/.virtualenvs/app/lib/python2.7/site.py", line 41, in load_host_site
    reload(sys.modules["site"])  # noqa # call system site.py to setup import libraries
  File "/home/ubuntu/.virtualenvs/app/lib/python2.7/site.py", line 164, in <module>
    main()
  File "/home/ubuntu/.virtualenvs/app/lib/python2.7/site.py", line 19, in main
    load_host_site()
  File "/home/ubuntu/.virtualenvs/app/lib/python2.7/site.py", line 52, in load_host_site
    add_site_dir = sys.modules["site"].addsitedir
AttributeError: 'module' object has no attribute 'addsitedir'
 

Похоже, что .virtualenvs/app/lib/python2.7/site.py в обеих установках все по-разному. Приведенная выше ошибка является корнем проблемы.

Ответ №1:

Разница в том, как virtualenv обновлялось после версии 16.7.9 . Следующая версия Version 20.0.0b1 — это полная перезапись пакета.

Среды, о которых идет речь, ведут себя по-разному, потому что у первого есть 16.7.9 , тогда как у второго есть 20.2.2 . Возврат к 16.7.9 сработал.

Ссылка здесь https://virtualenv.pypa.io/en/20.0.1/changelog.html#v20-0-0b1-2020-01-28