首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将不同版本的python与virtualenvwrapper配合使用

将不同版本的python与virtualenvwrapper配合使用
EN

Stack Overflow用户
提问于 2011-06-19 18:55:26
回答 4查看 72.1K关注 0票数 45

我已经使用Macports在我的Mac上安装了不同版本的python。当我通过$ port select python python27选择Python2.7时,virtualenvwrapper工作得很好。

但是如果我选择python的另一个版本,也就是2.6,virtualenvwrapper.hook_loader会生成一条错误消息: ImportError: No module named python

我检查了我的.profile,它将VIRTUALENVWRAPPER_PYTHON设置为/opt/local/bin/python,所以在我看来,无论我选择哪种python,virtualenvwrapper都应该可以工作。

当我切换python版本时,你知道是什么原因导致virtualenvwrapper生成.hook_loader错误吗?

EN

回答 4

Stack Overflow用户

发布于 2019-05-03 22:49:09

您可以显式选择python版本

代码语言:javascript
复制
mkvirtualenv -p python3 venvname

代码语言:javascript
复制
mkvirtualenv -p python2.7 venvname
票数 50
EN

Stack Overflow用户

发布于 2016-11-11 05:25:43

这些都不管用。我在设置我的osx机器时首先安装了Python3,pip和所有的默认设置都是这样。

首先,检查您安装的是哪种python:

代码语言:javascript
复制
$ `which python` -V

如果返回"Python 2.7.12",则设置为运行:

代码语言:javascript
复制
$ 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

这还将激活api_server工作区,这将更改您的python可执行文件:

代码语言:javascript
复制
$ which python
/Users/eric/.virtualenvs/api_server/bin/python
$ python -V
Python 2.7.12

which python实际上是做什么的?它输出在PATH中找到的python可执行文件的目录:

代码语言:javascript
复制
$ which python
/usr/local/bin/python

通过使用which python,您基本上是将/usr/local/bin/python传递给mkvirtualenv目录中的-p选项。

which python中返回多个python可执行文件时,会发生什么情况?只需找到你想要的,并传递给它:

代码语言:javascript
复制
$ mkvirtualenv -p /usr/local/bin/python3 api_server

而virtualenvwrapper最终将使用该python可执行文件。

票数 19
EN

Stack Overflow用户

发布于 2016-08-08 23:07:28

已确认使用了两个名称相似的环境变量:

VIRTUALENVWRAPPER_PYTHON -- virtualenvwrapper实用程序本身使用哪个Python版本。换句话说,哪个版本的Python执行virtualenvwrapper,就好像该Python版本已经在virtualenvwrapper脚本文件的#!行中显式命名一样。

Python --当您创建一个新的虚拟环境时,virtualenv将安装哪个VIRTUALENV_PYTHON版本。相当于virtualenv命令行上的-p / --python选项。

可能很明显:)在虚拟环境中运行的Python版本就是您为该环境安装的版本--在创建env之后与上面的环境变量无关。

有关如何在virtualenv中升级https://stackoverflow.com/a/24724360/763269,请参阅Python。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6401951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档