环境确认
PowerShell 提供了几个不同的执行策略级别,包括:
- Restricted:不允许任何脚本运行。这是默认的执行策略,为大多数用户提供了安全的起点。
- AllSigned:只允许运行由受信任的发布者签名的脚本。
- RemoteSigned:从本地计算机加载的所有脚本都可以运行,但从 Internet 下载的脚本必须签名才能运行。
- Unrestricted:允许所有脚本运行。
- Bypass:绕过执行策略,不执行任何脚本块或配置文件。
- Undefined:没有设置执行策略。
## 查看当前策略
PS C:\Users\xuyuansheng> Get-ExecutionPolicy
RemoteSigned
#设置为可执行本地脚本
Set-ExecutionPolicy RemoteSigned
使用PowerShell安装
安装pyenv-win
这是管理多版本python的工具
Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1" -OutFile "$HOME/install-pyenv-win.ps1";
& "$HOME/install-pyenv-win.ps1"
常用命令
# 查看版本
pyenv --version
# 查询所有可安装python版本
pyenv install -l
# 设置全局python 版本
pyenv global <version>
安装pyenv-venv
这是管理虚拟环境的工具
Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/pyenv-win/pyenv-win-venv/main/bin/install-pyenv-win-venv.ps1" -OutFile "$HOME\install-pyenv-win-venv.ps1";
&"$HOME\install-pyenv-win-venv.ps1"
常用命令
# 查看已经安装的环境
pyenv list envs/python
# 安装虚拟环境
pyenv install <python-version> <env-name>
缺点:
- 软件安装的路径都在c盘,所有下载的python文件和虚拟环境文件都在c盘,会使用c盘空间迅速消耗完
使用Git安装(自定义安装)
下载文件
cd d:/JavaProgramFiles
git clone https://github.com/pyenv-win/pyenv-win.git
cd pyenv-win
git clone https://github.com/pyenv-win/pyenv-win-venv.git
## 最终的目录结构
## D:\JavaProgramFiles\pyenv-win\pyenv-win pyenv的家目录
## D:\JavaProgramFiles\pyenv-win\pyenv-win-venv pyenv-venv的家目录
配置环境变量
## 新增环境变量
PYENV D:\JavaProgramFiles\pyenv-win\pyenv-win\
PYENV_HOME D:\JavaProgramFiles\pyenv-win\pyenv-win\
PYENV_ROOT D:\JavaProgramFiles\pyenv-win\pyenv-win\
PYENV_VENV D:\JavaProgramFiles\pyenv-win\pyenv-win-venv\
## 环境变量最后的 \ 一定不能丢,不然会出问题
配置PATH路径
## 添加如下三个项
%PYENV%bin
%PYENV%shims
%PYENV_VENV%bin
验证pyenv
## 验证pyenv
pyenv install -l
pyenv versions
安装python
$ pyenv install 3.11.7
##
$ pyenv install 3.11.7
:: [Info] :: Mirror: https://www.python.org/ftp/python
:: [Downloading] :: 3.11.7 ...
:: [Downloading] :: From https://www.python.org/ftp/python/3.11.7/python-3.11.7-amd64.exe
:: [Downloading] :: To D:\JavaProgramFiles\pyenv-win\pyenv-win\install_cache\python-3.11.7-amd64.exe
## 但是国内一般下载不下来,这时候我们可以使用国内镜像手动下载下来
## https://mirrors.huaweicloud.com/python/3.11.7/
## 然后放到 D:\JavaProgramFiles\pyenv-win\pyenv-win\install_cache 目录中
## 最后再执行 pyenv install 3.11.7
$ pyenv install 3.11.7
:: [Info] :: Mirror: https://www.python.org/ftp/python
:: [Installing] :: 3.11.7 ...
:: [Info] :: completed! 3.11.7
验证venv
## 验证pyenv-venv
pyenv-venv
pyenv-venv list envs
问题
## 会提示找不到路径,但是实际上都是正常配置的
$ pyenv-venv
The system cannot find the path specified.
$ where pyenv-venv
D:\JavaProgramFiles\pyenv-win\pyenv-win-venv\bin\pyenv-venv
D:\JavaProgramFiles\pyenv-win\pyenv-win-venv\bin\pyenv-venv.bat
解决
原因:pyenv-venv 这个脚本是通过调用其他脚本运行的,但是另外的脚本内,路径又是写死的
-
备份文件 D:\JavaProgramFiles\pyenv-win\pyenv-win-venv\bin 这个目录下的脚本文件全部备份一下
-
打开 pyenv-venv 脚本文件,发现它调用的是 pyenv-venv.bat
#!/bin/sh MSYS2_ARG_CONV_EXCL="/C" exec cmd /C call "$(cygpath -wa "$(dirname "$0")")/pyenv-venv.bat" "$@"; # should work on both cygwin and git-bash/mingw
-
打开 pyenv-venv.bat 脚本文件,发现它调用的是 pyenv-win-venv.bat ,并且目录还是写死的从 %USERPROFILE% 目录下查找
@ECHO OFF @REM Alias for pyenv-win-venv.bat "%USERPROFILE%\.pyenv-win-venv\bin\pyenv-win-venv.bat" %* ## 修改查找路径为如下 "D:\JavaProgramFiles\pyenv-win\pyenv-win-venv\bin\pyenv-win-venv.bat" %*
-
打开 pyenv-win-venv.bat ,还是写死路径
@ECHO OFF powershell -File "%USERPROFILE%\.pyenv-win-venv\bin\pyenv-win-venv.ps1" %* ## 修改查找路径为如下 powershell -File "D:\JavaProgramFiles\pyenv-win\pyenv-win-venv\bin\pyenv-win-venv.ps1" %*
-
打开 pyenv-win-venv.ps1
## 第29行,它路径还是写死的 $app_dir = "$HOME\.pyenv-win-venv" ## 然后全局搜一下 $HOME 发现有三处 ## 修改 ## 在29行前面添加一个变量 $HOME11 = "D:\JavaProgramFiles\pyenv-win" ## 原来出现 $HOME 处作出修改 $HOME -->$HOME11 \.pyenv-win-venv --> \pyenv-win-venv $app_dir = "$HOME11\pyenv-win-venv" ## 208行 和 209行 Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/pyenv-win/pyenv-win-venv/main/bin/install-pyenv-win-venv.ps1" -OutFile "$HOME11\install-pyenv-win-venv.ps1"; &"$HOME11\install-pyenv-win-venv.ps1"
-
知识点
## 下面这个指定可以打印日志 Write-Host Write-Host "Installing env: $subcommand3 using Python v$subcommand2" ## 可以在调用ps1脚本时添加 -Debug 开启debug日志 ## 如: powershell -File "D:\JavaProgramFiles\pyenv-win\pyenv-win-venv\bin\pyenv-win-venv.ps1" -Debug %* ## 此时,下面这行代码就会输出日志 Write-Debug-Log "Pyenv Versions Dir: $pyenv_versions_dir"
验证修改
## 安装一个虚拟环境
$ pyenv-venv install 3.11.7 env
Installing env: env using Python v3.11.7
标签:venv,##,win,pyenv,install,JavaProgramFiles,win11
From: https://www.cnblogs.com/xysgo/p/18100795