【问题标题】:Using VirtualEnv with multiple Python versions on windows在 Windows 上使用带有多个 Python 版本的 VirtualEnv
【发布时间】:2014-04-01 18:13:05
【问题描述】:

我的机器上有 python 2.7.6 和 3.4.0。 2.7 版本正在我的路上。我想使用 3.4 设置一个 virtualenv。在 SO 和其他地方有很多帖子建议我从命令提示符处执行以下操作:

virtualenv -p c:\python34 myvirtualenv

但这对我不起作用。控制台会话具有管理员权限并且 UAC 已关闭,但是我遇到了权限问题:

F:\virtualenv>virtualenv -p c:\python34 myenv
Running virtualenv with interpreter c:\python34
Traceback (most recent call last):
  File "c:\python27\scripts\virtualenv-script.py", line 9, in <module>
    load_entry_point('virtualenv==1.11', 'console_scripts', 'virtualenv')()
  File "C:\Python27\lib\site-packages\virtualenv.py", line 779, in main
    popen = subprocess.Popen([interpreter, file] + sys.argv[1:], env=env)
  File "C:\Python27\lib\subprocess.py", line 709, in __init__
    errread, errwrite)
  File "C:\Python27\lib\subprocess.py", line 957, in _execute_child
    startupinfo)
WindowsError: [Error 5] Access is denied

我也尝试过专门指向 virtualenv 的 3.4 版本,但在不更改路径的情况下,它最终会执行 2.7 和 3.4 python 文件的混合包。

我能找到设置我的虚拟环境的唯一方法是将我的路径更改为 3.4,运行 virtualenv 然后将我的路径重置为 2.7,这破坏了 virtualenv 上的 python 开关点。

谢谢

【问题讨论】:

    标签: python virtualenv


    【解决方案1】:

    更好:

    py -3.4 -m venv c:\path\to\wherever\you\want\it
    

    如果您没有py.exe 启动器(但应该已安装),您可以将py -3.4 替换为c:\Python34\python.exe(假设为默认位置)


    这得益于方便的、Windows-versioningest、超级好的运行时选择器py.exe

    默认情况下,py.exe 将出现在 Windows 安装中(我认为它带有 2.7,我知道它带有 3+)。当您运行py 时,它会搜索一些环境变量,或者您可以使用特定的版本号覆盖它(在您的情况下为-2.7-3.4)您可以省略.4,它会选择“最大”次要版本号。

    您可以使用它来运行 Python 脚本。如果你在脚本的顶部放置一个 hash-bang 行 #!python3 并将其命名为 py myscript.py 那么它将选择正确的 Python 版本开始,通过搜索脚本的第一行并搜索版本号.

    这很酷,因为您可以将 #!/usr/bin/env python3.4 之类的内容放在脚本的顶部,然后在 Windows 上使用 py 运行它,或者在 linux 上运行

    $ chmod +x myscript.py
    $ ./myscript.py
    

    非常有用。

    【讨论】:

    • 这行得通,谢谢。我对py不熟悉。我得查一下。
    • @marcp,添加了一些信息(尽管您也可以在官方文档中找到它们)
    • @oenpelli 的解决方案对我有用。只需将python.exe添加到-p参数中的路径即可。
    【解决方案2】:

    Windows下需要运行:

    virtualenv -p c:\python34.exe myvirtualenv
    

    最后的 .exe 使一切变得不同。

    【讨论】:

    • 只是一个小注释“virtualenv -p c:\python34\python.exe myvirtualenv”对我有用
    【解决方案3】:

    如果上述措施不起作用,试试这个(使用 venv 代替 virtualenv):

    python -m venv venvname
    

    (如果环境变量路径设置中没有列出的话,用python.exe路径替换python)

    【讨论】:

      【解决方案4】:

      不得不玩了一段时间才能把它弄好。安装了 Python2.7.9(Windows 7),想试一试最新的 Python3 版本。安装 Python3.4.3 后,我进入目录栏并使用以下命令创建了一个虚拟环境 foo:

      virtualenv -p c:\Python34\python.exe foo
      

      我花了很长时间才明白我需要以“正常”方式安装 Python3.4.3 解释器,我最初认为它会使用 virtualenv 安装。这在this answer 中有解释。安装 Python3.4.3 后,我没有在 Windows 中触摸 pythonpath。

      【讨论】:

      • 这个答案对我来说适用于 2.7.16、3.6.8、3.7.3 和 3.8.2 版本,如果 virtualenv 由于某种原因不存在,则始终可以使用 pip install virtualenv 安装它。
      【解决方案5】:

      在 Windows 上使用 GitBash,我也遇到了一些麻烦。

      我在 Windows 路径上有 Python 3.6,但正在尝试创建一个 Python 2.7 虚拟环境来测试旧项目。

      最终通过:

      1. adding the C:\Python27 path to my Windows environment variables 
      2. virtualenv -p c:/python27/python.exe venvname
      

      (在此之前,我不得不费劲地添加 virtualenv 模块)

      【讨论】:

        【解决方案6】:

        你可以像这样使用 virtualenv 命令

        virtualenv --python=C:\python34\python.exe myvirtualenv
        

        Python 3.7 示例

        virtualenv --python=C:\Users\hp\AppData\Local\Programs\Python\Python37\python.exe myenv
        

        【讨论】:

          猜你喜欢
          • 2012-02-02
          • 2011-03-13
          • 2018-04-01
          • 2015-11-17
          • 2015-07-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多