如何让virtualenv运行Python 3而不是Python 2.7?

时间:2018-05-08 18:07:50

标签: python-3.x python-2.7 virtualenv

在Mac上,如果我只是打开一个新的终端窗口并运行:

python --version

我明白了:

3.6

但如果我这样做:

 virtualenv venv && source venv/bin/activate

然后,在那个环境中,我运行:

python --version

我明白了:

2.7

我需要virtualenv才能运行3.6。我怎么做?

这:

/usr/bin/python

是2.7,但是:

/usr/local/bin/python 

是3.6。普通用户的路径在/usr/local/bin之前出现/usr/bin/。 virtualenv是否像其他人一样运行?我该如何控制它的路径?

我跑了这个:

virtualenv -p /usr/local//Cellar/python/3.6.5/bin/python3 venv

然后我这样做:

virtualenv venv && source venv/bin/activate

我在2.7的环境中跑步。

3 个答案:

答案 0 :(得分:9)

在Python 3上,您不再需要virtualenv脚本,您应该只使用标准库中包含的venv模块:

python3 -m venv myvenv

但是如果你真的想继续使用旧的virtualenv脚本,你可以 - 使用-p选项明确指定解释器:

virtualenv -p /path/to/python3 myvenv

答案 1 :(得分:0)

BsDatepickerContainerComponent_Host.ngfactory.js? [sm]:1 ERROR TypeError: Cannot read property 'schedule' of undefined
at ObserveOnSubscriber.scheduleMessage (observeOn.js:99)
at ObserveOnSubscriber._error (observeOn.js:105)
at ObserveOnSubscriber.Subscriber.error (Subscriber.js:105)
at BehaviorSubject.Observable._trySubscribe (Observable.js:177)
at BehaviorSubject.Subject._trySubscribe (Subject.js:97)
at BehaviorSubject.Observable.subscribe (Observable.js:160)
at ObserveOnOperator.call (observeOn.js:74)
at AnonymousSubject.Observable.subscribe (Observable.js:157)
at ScanOperator.call (scan.js:72)
at AnonymousSubject.Observable.subscribe (Observable.js:157)

默认情况下使用此python。编辑文件并更改第一行。或者使用不同的python重新安装head -1 `which virtualenv`

virtualenv

答案 2 :(得分:0)

最简单的方法是将python全局更改为Python3,因为我认为您比Python 2.7(或希望总是)更频繁地使用它。为此,请在.bash_profile

的末尾添加以下代码行
alias python='python3'

virtuanenv 正在使用 / usr / bin / python ,因此它现在可以正常工作。

如果您不想全局更改它,则应使用以下命令创建Python3.6虚拟环境:

python3 -m venv venv

或显式Python版本,如果您安装了多个Python3版本:

python3.6 -m venv venv

最后有更多建议:我建议您阅读一些关于 pipenv 的内容,因为它是一种新的推荐方式,可以立即处理虚拟环境和整个软件包管理。它非常容易并且解决了许多常见问题。 Here's来自realpython.com的关于该主题的精彩文章。

希望我能帮助你。祝你有愉快的一天。