【问题标题】:How do i make pyinvoke use python3?我如何让 pyinvoke 使用 python3?
【发布时间】:2016-02-06 11:31:55
【问题描述】:

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

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

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

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

我现在唯一的解决方法是只为 python3 安装 pyinvoke。然后会在python3下运行。

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

【问题讨论】:

    标签: python python-3.x virtualenv pyinvoke


    【解决方案1】:

    我猜你已经在所有 virtualenvs 之外全局安装了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'!
    

    【讨论】:

      【解决方案2】:

      正如pzrq 提到的,问题是您已在全局范围内安装了调用。

      这不是一个虚拟环境问题,而是一个 linux 问题。

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

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

      您的 virtualenv python3 invoke 位于可用路径列表的后面,因此从未到达。

      我建议只为每个虚拟环境安装调用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-16
        • 2015-08-19
        • 1970-01-01
        • 2022-10-22
        • 1970-01-01
        • 2019-10-10
        • 1970-01-01
        • 2020-09-10
        相关资源
        最近更新 更多