Kev*_*nle 43 python virtualenv python-idle
我有一个从虚拟环境安装的软件包.如果我只是启动python解释器,那么该包可以很好地导入.但是,如果我启动Idle,则无法导入该包(因为它仅在一个特定的virtualenv中可用而不是全局).如何从virtualenv启动Idle,以便virtualenv的所有包都可用?
Mat*_*son 52
python -m idlelib.idle从这个答案.
这个答案假定Python 3.
有几个不同的虚拟环境管理器,每个管理器都有一个稍微不同的方式来处理python的安装位置以及它的运行方式,详见本答案.
注意:一些Linux发行版将venv模块打包到一个单独的包中:Ubuntu和Debian
如果虚拟环境安装在my_project-venv通过python -m venv my_project-venv从该文件夹内部运行调用的项目文件夹中,则虚拟环境将位于由模块创建的新文件夹中:
my_project_dir
?
?? my_project-venv
Run Code Online (Sandbox Code Playgroud)
在Windows上,使用Python 3.7.1,文件my_project夹中的文件可能如下所示:
my_project-venv
?
?? Include
?? Lib
?? Scripts
? ?? ...
? ?? activate.bat
? ?? Activate.ps1
? ?? deactivate.bat
? ?? ...
?
?? pyvenv.cfg
Run Code Online (Sandbox Code Playgroud)
可以通过运行my_project-venv或activate.bat脚本来启动虚拟环境,具体取决于是否Activate.ps1使用PowerShell:
:: Using cmd.exe
cd my_project_dir
.\my_project-venv\Scripts\activate.bat
Run Code Online (Sandbox Code Playgroud)
注意:如果通过双击运行,这些脚本不会使shell保持打开状态.启动一个shell,然后输入上面的命令运行它们,并为项目更改文件夹名称
在大多数其他操作系统上,虚拟环境文件夹将如下所示:
# Using PowerShell
cd my_project_dir
.\my_project-venv\Scripts\Activate.ps1
Run Code Online (Sandbox Code Playgroud)
然后,从除鱼cmd或鱼以外的任何外壳,通过以下方式激活环境:
my_project-venv
?
?? bin
? ?? ...
? ?? activate
? ?? activate.csh
? ?? activate.fish
? ?? ...
?
?? include
?? lib
?? lib64
?? pyvenv.cfg
Run Code Online (Sandbox Code Playgroud)
对于csh和csh存在用于激活虚拟环境(fish和activate.csh分别)的特定于shell的脚本,它们可以像activate.fish脚本一样运行.
在所有操作系统上激活虚拟环境后,运行以下命令将启动IDLE,并可访问安装到虚拟环境中的软件包:
# Most operating systems
cd my_project_dir
. my_project-venv/bin/activate
Run Code Online (Sandbox Code Playgroud)
900*_*000 36
IDLE本质上是
from idlelib.PyShell import main
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
因此,除非您构建没有默认包的virtualenv,否则您可以自己启动它.
在Windows上,从这样的命令行运行的Python脚本some_script.py可能由使用python some_script.py命令时使用的其他Python解释器运行(它取决于py文件关联).如果想要避免这个问题,最好创建一个idle.bat包含内容的批处理文件,python -c "from idlelib.PyShell import main; main()"并将其放在Scriptsvirtualenv 的文件夹中.此外,像其他人一样,空闲需要tcl和tk文件夹一起工作.最简单的解决方案是创建从virtualenv到基本 Python安装的符号链接
(2.7) c:\python\virtualenv\2.7\Lib>mklink /d tcl8.5 "c:\Program Files\Python\2.7\tcl\tcl8.5"
symbolic link created for tcl8.5 <<===>> c:\Program Files\Python\2.7\tcl\tcl8.5
(2.7) c:\python\virtualenv\2.7\Lib>mklink /d tk8.5 "c:\Program Files\Python\2.7\tcl\tk8.5"
symbolic link created for tk8.5 <<===>> c:\Program Files\Python\2.7\tcl\tk8.5
Run Code Online (Sandbox Code Playgroud)
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()
Run Code Online (Sandbox Code Playgroud)
我正在使用Ubuntu 15.04操作系统。我已经使用virtualenv安装了一些软件包。
因此,要运行virtualenv 中的文件,包括那些包,我在终端中使用以下命令
(我的虚拟环境的名称是venv):
#Activate the virtualenv venv
source venv/bin/activate
#To Run IDLE in virtualenv venv
python -m idlelib
Run Code Online (Sandbox Code Playgroud)
运行IDLE 后,您可以使用ctrl+o键盘快捷键打开文件。
| 归档时间: |
|
| 查看次数: |
28962 次 |
| 最近记录: |