wmf*_*ox3 31 python virtualenvwrapper
我使用Macports在我的Mac上安装了各种版本的python.当我选择python 2.7 via时$ port select python python27,virtualenvwrapper工作得很好.
但是如果我选择另一个版本的python,即2.6,virtualenvwrapper会生成一条错误消息:ImportError:没有名为virtualenvwrapper.hook_loader的模块
我检查了我的.profile并且设置VIRTUALENVWRAPPER_PYTHON为/opt/local/bin/python,所以在我看来virtualenvwrapper应该工作,无论我选择了哪个python.
知道什么会导致virtualenvwrapper在切换python版本时生成.hook_loader错误吗?
Ste*_*ano 30
我知道这在你的评论中已经解决了,但它只是mac,
甚至更多我认为正确的方法应该是设置VIRTUALENVWRAPPER_PYTHON你在命令行使用的真正的python.
确保你能做到which python.
实际上,你甚至可以这样做:
export VIRTUALENVWRAPPER_PYTHON=`which python`
Run Code Online (Sandbox Code Playgroud)
在linux上我在.bashrc中这样做,所以总而言之,假设你安装了virtualenv并创建了你的第一个"虚拟环境" virtualenv(原创)
. virtualenv/bin/activate
export WORKON_HOME=$HOME/.virtualenvs # or whatever else you want
export VIRTUALENVWRAPPER_PYTHON=`which python`
export PROJECT_HOME=SOMETHING
source $HOME/virtualenv/bin/virtualenvwrapper.sh # or wherever else you got that installed
Run Code Online (Sandbox Code Playgroud)
(顺便说一下,你写道:
我检查了我的.profile,它将VIRTUALENVWRAPPER_PYTHON设置为/ opt/local/bin/python,所以在我看来virtualenvwrapper无论我选择哪个python都应该工作
这实际上是相反的 - virtualenv依赖于使用正确的python(以及随之而来的包),因此相应地设置python路径非常重要.
即使运行带有"#!/ bin/python"的py文件,一旦你被虚拟化,也可能会带来麻烦!
edu*_*911 18
这些都没有奏效.我在设置我的osx机器时首先安装了Python3,而pip和默认都是默认的.
首先,检查你安装了哪个python:
$ `which python` -V
Run Code Online (Sandbox Code Playgroud)
如果返回"Python 2.7.12",则设置为运行:
$ mkvirtualenv -p `which python` api_server
Running virtualenv with interpreter /usr/local/bin/python
New python executable in /Users/eric/.virtualenvs/api_server/bin/python2.7
Also creating executable in /Users/eric/.virtualenvs/api_server/bin/python
Installing setuptools, pip, wheel...done.
virtualenvwrapper.user_scripts creating /Users/eric/.virtualenvs/api_server/bin/predeactivate
virtualenvwrapper.user_scripts creating /Users/eric/.virtualenvs/api_server/bin/postdeactivate
virtualenvwrapper.user_scripts creating /Users/eric/.virtualenvs/api_server/bin/preactivate
virtualenvwrapper.user_scripts creating /Users/eric/.virtualenvs/api_server/bin/postactivate
virtualenvwrapper.user_scripts creating /Users/eric/.virtualenvs/api_server/bin/get_env_details
Run Code Online (Sandbox Code Playgroud)
这也将激活api_serverworkon,它会改变你的python可执行文件:
$ which python
/Users/eric/.virtualenvs/api_server/bin/python
$ python -V
Python 2.7.12
Run Code Online (Sandbox Code Playgroud)
什么是which python真正做到?它输出在PATH中找到的python可执行文件的目录:
$ which python
/usr/local/bin/python
Run Code Online (Sandbox Code Playgroud)
通过使用which python,您基本上是传递/usr/local/bin/python到-pmkvirtualenv目录中的选项.
当你有多个python可执行文件返回时会发生什么which python?找到你想要的那个并传递它:
$ mkvirtualenv -p /usr/local/bin/python3 api_server
Run Code Online (Sandbox Code Playgroud)
而virtualenvwrapper将最终使用该python可执行文件.
Dos*_*Dos 13
您可以显式选择python版本
mkvirtualenv -p python3 venvname
Run Code Online (Sandbox Code Playgroud)
要么
mkvirtualenv -p python2.7 venvname
Run Code Online (Sandbox Code Playgroud)
确认使用两个同名的环境变量:
VIRTUALENVWRAPPER_PYTHON - virtualenvwrapper实用程序本身使用哪个Python版本.换句话说,哪个版本的Python执行virtualenvwrapper,就好像#!在virtualenvwrapper脚本文件的行中明确命名了Python版本一样.
VIRTUALENV_PYTHON- virtualenv创建新虚拟环境时将安装哪个Python版本.等效于命令行-p / --python上的选项virtualenv.
或许显然:)在虚拟环境中运行的Python版本是您为该环境安装的版本 - 在创建env之后与上述环境变量无关.
有关如何在virtualenv中升级Python,请参阅/sf/answers/1730705231/.
| 归档时间: |
|
| 查看次数: |
49679 次 |
| 最近记录: |