#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
последней установки. В частности:
Мои вопросы:
- Почему обе виртуальные среды инициализируются по-разному, когда базовые версии Python одинаковы?
- Я хочу воспроизвести результаты последней установки в предыдущей установке. Как мне это настроить?
Я спрашиваю об этом, потому что есть 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