如何让pyinvoke使用python3?

时间:2015-11-05 14:57:11

标签: python python-3.x virtualenv pyinvoke

此问题与this one类似,但不完全相同。

我安装了python2.7和python3.5。我可以从命令行使用其中任何一个来运行脚本。我当前的默认“python”是python2。

我有一个使用pyinvoke的python3脚本,我需要运行它,通常使用命令行中的invoke <task>命令运行。即使我设置了一个使用python3的虚拟环境,invoke仍然使用python2。

我认为虚拟环境中缺少一些东西?

我现在唯一的解决办法就是只为python3安装pyinvoke。然后它将在python3下运行。

有人知道如何设置它以使用虚拟环境吗?

2 个答案:

答案 0 :(得分:1)

我猜你在全球范围内已经安装了invoke

如果是这样,修复将是:

#!/usr/bin/bash
# Remove global invoke, at a fresh terminal or after deactivate
$ pip uninstall invoke

要测试它,请添加到Invoke的tasks.py文件:

import sys
print(sys.version_info)

然后在终端检查我们得到Python 3.x:

#!/usr/bin/bash
$ mkvirtualenv myproject_py3 --python=$(which python3)
(myproject_py3)$ pip install invoke
(myproject_py3)$ invoke --list
sys.version_info(major=3, minor=5, micro=0, releaselevel='final', serial=0)
No tasks found in collection 'tasks'!

答案 1 :(得分:0)

pzrq所述,问题是您已全局调用安装。

与Linux问题不同,这不是virtualenv问题。

这意味着,当您从终端使用命令invoke时,Linux会在此类可用文件的可用路径(/bin/sbin或您自己使用的路径)内查找文件。

首先找到并执行您的全局python 2 invoke

您的virtualenv python3 invoke稍后在可用路径列表中,因此从未到达。

我建议仅在每个虚拟环境中安装invoke。

相关问题