首页 > 解决方案 > 如何在 MacOS 上使用 homebrew python3.6 解决 virtualenvwrapper 的问题?

问题描述

我有 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' ...

这显然不会虚拟环境中工作,因为它还没有virtualenvwrapper安装。我错过了什么?

标签: pythonpython-3.xmacosvirtualenvvirtualenvwrapper

解决方案


推荐阅读