如何从虚拟环境中启动Python Idle (virtualenv)

76 投票
9 回答
63248 浏览
提问于 2025-04-16 11:23

我有一个在虚拟环境中安装的包。如果我直接启动Python解释器,这个包可以正常导入。但是,如果我启动Idle,这个包就无法导入了,因为它只在特定的虚拟环境中可用,而不是全局可用。我该如何从虚拟环境中启动Idle,这样虚拟环境中的所有包都能使用呢?

9 个回答

11

在Python 3.6版本中,对idlelib进行了现代化和重构。这次改动包括对几个方法进行了重命名。因此,现在要访问idlelib.PyShell,需要使用idlelib.pyshell。下面的代码片段是基于被接受的答案,应该适用于任何Python版本:

#!/usr/bin/env python
"""Simple script to run Idle from a venv in PyCharm."""

try:
    # Import for Python pre 3.6
    from idlelib.PyShell import main
except ModuleNotFoundError:
    # Import for Python version 3.6 and later
    from idlelib.pyshell import main

if __name__ == '__main__':
    main()
109

简短回答

  1. 启动虚拟环境
  2. 运行 python -m idlelib.idle

来自 这个回答

详细回答

这个回答假设你使用的是 Python 3。

有几种不同的虚拟环境管理工具,它们在处理 Python 安装位置和运行方式上稍有不同,详细信息可以参考这个回答

这个回答假设你使用的是 venv 模块,并且它是 按照文档安装的

注意:某些 Linux 发行版将 venv 模块打包成单独的包:UbuntuDebian

如果虚拟环境是在名为 my_project-venv 的文件夹中安装的,命令是 python -m venv my_project-venv,并且是在 my_project 文件夹内执行的,那么虚拟环境会在模块创建的新文件夹内:

my_project_dir
      │
      ┝━ my_project-venv

在 Windows 系统上,使用 Python 3.7.1,my_project-venv 文件夹内的文件可能看起来像这样:

my_project-venv
      │
      ┝━ Include
      ┝━ Lib
      ┝━ Scripts
      │     ┝━ ...
      │     ┝━ activate.bat
      │     ┝━ Activate.ps1
      │     ┝━ deactivate.bat
      │     ┕━ ...
      │
      ┕━ pyvenv.cfg

可以通过运行 activate.batActivate.ps1 脚本来启动虚拟环境,具体取决于你使用的是 cmd 还是 PowerShell

:: Using cmd.exe
cd my_project_dir
.\my_project-venv\Scripts\activate.bat
# Using PowerShell
cd my_project_dir
.\my_project-venv\Scripts\Activate.ps1

注意:如果双击这些脚本,它们不会保持 shell 打开。请先启动一个 shell,然后通过输入上述命令来运行它们,文件夹名称要根据你的项目进行更改

在大多数其他操作系统上,虚拟环境文件夹看起来像这样:

my_project-venv
      │
      ┝━ bin
      │     ┝━ ...
      │     ┝━ activate
      │     ┝━ activate.csh
      │     ┝━ activate.fish
      │     ┕━ ...
      │
      ┝━ include
      ┝━ lib
      ┝━ lib64
      ┕━ pyvenv.cfg

然后,在除了 cshfish 之外的任何 shell 中,通过以下方式激活环境:

# Most operating systems
cd my_project_dir
. my_project-venv/bin/activate

对于 cshfish,有特定于 shell 的脚本用于激活虚拟环境(分别是 activate.cshactivate.fish),可以像 activate 脚本一样运行。

一旦在所有操作系统上激活了虚拟环境,运行以下命令将启动 IDLE,并可以访问安装在虚拟环境中的包:

python -m idlelib.idle
42

对于Python 3.6及以上版本,请查看Paul Wicking下面的回答

在Python 3.6之前,IDLE基本上是

from idlelib.PyShell import main
if __name__ == '__main__':
  main()

所以你可以自己启动它,除非你在创建虚拟环境时没有选择默认的包。

撰写回答