Как избавиться от проблем с virtualenvwrapper на MacOS с homebrew python3.6? - PullRequest
0 голосов
/ 25 января 2019

У меня 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.Чего мне не хватает?

...