我的目录结构是C:\Users\...\[MATH] foldername
因此,要更改目录,根据我看到的一些 SE 帖子,我必须使用:
cd 'C:\Users\...\`[MATH`] foldername'
这确实会改变所需的目录。
到达这里后,我使用py -m venv Project
,它会正确创建包含 venv 内容的 Project 文件夹。
当我试着跑步时Scripts\activate
,
我收到以下错误:
Line |
185 | $VenvDir = $VenvExecDir.Parent.FullName.TrimEnd("\\/")
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| You cannot call a method on a null-valued expression.
Line |
138 | $pyvenvConfigPath = Join-Path -Resolve -Path $ConfigDir -ChildPat …
| ~~~~~~~~~~
| Cannot bind argument to parameter 'Path' because it is an empty string.
Line |
206 | … ose " Got leaf-name of $VenvDir='$(Split-Path -Path $venvDir -Leaf)' …
| ~~~~~~~~
| Cannot bind argument to parameter 'Path' because it is an empty string.Line |
207 | $Prompt = Split-Path -Path $venvDir -Leaf
| ~~~~~~~~
| Cannot bind argument to parameter 'Path' because it is an empty string.
我真的不知道该怎么做。提前感谢帮助。如果它有帮助,我在 Windows 系统上。
基本上,我能够将问题缩小到我的目录中有一个特殊字符。对没有此字符的其他路径使用相同的过程不会造成任何问题。
Python 的捆绑
venv
模块(v3.4+),从 v3.12.3 开始,有一个错误[
,导致它在 PowerShell 中名称包含/的目录中无法正常工作]
。这些字符是PowerShell通配符表达式中的元字符(具有特殊含义的字符),并且传递给文件系统相关 cmdlet 的参数(也是第一个位置参数)的参数(例如和)被解释为通配符表达式。
-Path
Get-Item
Get-ChildItem
为了确保路径的逐字
-LiteralPath
解释,请改用参数。您有两种解决方法:
通过避免在项目目录名称中使用
[
/来绕过该问题。]
./Scripts/bin/Activate.ps1
一旦您的项目已初始化,请手动修复python -m venv ./Scripts
。$VenvExecDir = Get-Item -Path $VenvExecPath
为$VenvExecDir = Get-Item -LiteralPath $VenvExecPath