此问题与this one类似,但不完全相同。
我安装了python2.7和python3.5。我可以从命令行使用其中任何一个来运行脚本。我当前的默认“python”是python2。
我有一个使用pyinvoke的python3脚本,我需要运行它,通常使用命令行中的invoke <task>
命令运行。即使我设置了一个使用python3的虚拟环境,invoke
仍然使用python2。
我认为虚拟环境中缺少一些东西?
我现在唯一的解决办法就是只为python3安装pyinvoke。然后它将在python3下运行。
有人知道如何设置它以使用虚拟环境吗?
答案 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。