У меня MacOS 10.14.3 с homebrew python 3.6.5_1, и для установки virtualenvwrapper я делаю python3 -mpip install virtualenv virtualenvwrapper
.Все хорошо.
Затем я получаю /usr/local/bin/virtualenvwrapper.sh
в моем .bashrc
, установив VIRTUALENVWRAPPER_PYTHON=python3
(в противном случае вы получите MacOS python2, черт возьми).
Затем, чтобы создать virtualenv:
% mktmpenv
Using base prefix '/usr/local/Cellar/python/3.6.5_1/Frameworks/Python.framework/Versions/3.6'
New python executable in ~/.local/share/virtualenvs/tmp-a4c44f99827fb6a/bin/python3.6
Also creating executable in ~/.local/share/virtualenvs/tmp-a4c44f99827fb6a/bin/python
Installing setuptools, pip, wheel...
done.
virtualenvwrapper.user_scripts creating ~/.virtualenvs/tmp-a4c44f99827fb6a/bin/predeactivate
virtualenvwrapper.user_scripts creating ~/.virtualenvs/tmp-a4c44f99827fb6a/bin/postdeactivate
virtualenvwrapper.user_scripts creating ~/.virtualenvs/tmp-a4c44f99827fb6a/bin/preactivate
virtualenvwrapper.user_scripts creating ~/.virtualenvs/tmp-a4c44f99827fb6a/bin/postactivate
virtualenvwrapper.user_scripts creating ~/.virtualenvs/tmp-a4c44f99827fb6a/bin/get_env_details
~/.local/share/virtualenvs/tmp-a4c44f99827fb6a/bin/python3: Error while finding module specification for 'virtualenvwrapper.hook_loader' (ModuleNotFoundError: No module named 'virtualenvwrapper')
~/.local/share/virtualenvs/tmp-a4c44f99827fb6a/bin/python3: Error while finding module specification for 'virtualenvwrapper.hook_loader' (ModuleNotFoundError: No module named 'virtualenvwrapper')
Эти ошибки в конце выглядят потому, что модуль virtualenvwrapper установлен только в системном (доморощенном) python3, а не в самом virtualenv.- поэтому, когда virtualenv активирован (т.е. PYTHONPATH настроен на исключение стандартного пути), он не может найти virtualenvwrapper:
% python3 -c 'import virtualenvwrapper; print(virtualenvwrapper)'
<module 'virtualenvwrapper' (namespace)>
% mkvirtualenv foo
... installs stuff... gives errors...
(foo) % python3 -c 'import virtualenvwrapper'
Traceback (most recent call last):
File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'virtualenvwrapper'
Я полагаю, что у меня что-то неправильно настроено, или мне не хватаетшаг куда-нибудь.
[править] Дополнительная информация: virtualenvwrapper_run_hook
, который запускает хуки, загружает python, выполняя
$VIRTUALENVWRAPPER_PYTHON -m 'virtualenvwrapper.hook_loader' ...
, который явно не будет работать в virtual env, поскольку на нем не установлено virtualenvwrapper
.Чего мне не хватает?