use*_*443 5 python python-venv virtual-environment python-3.6 python-3.7
我正在尝试使用以下命令在 Windows 中创建虚拟环境:
python3 -m venv <dir-name>
当我运行上述命令后在 cmd 中检查当前目录的内容时,我没有看到 venv 目录出现。该命令不会引发任何错误。
这个人似乎也遇到了同样的问题: Python venv notcreate virtualenvironment
但接受的答案是重新安装 python,这对我来说不起作用。其他答案建议安装 virtualenv,但据我所知,这与 venv 不同,推荐用于 python3.3+
有谁知道如何用 venv 解决这个问题?我尝试过 python 3.6 和 3.7
编辑:问题似乎是 PATH 中设置的 python.exe 的位置未被使用。它改为使用:C:\Users\GSI\AppData\Local\Microsoft\WindowsApps\python3.exe。我不确定如何修复我的环境变量。是否需要重启?我有很多东西正在运行,但如果有必要我可以重新启动
Edit2:我被要求发布以下命令的输出的屏幕截图。如您所见,当我仅使用“python3”运行它们时没有输出。当我使用安装 exe 的完整路径运行命令时,我确实得到了输出:
编辑3:我在这里找到了一篇有用的帖子: https ://superuser.com/questions/1437590/typing-python-on-windows-10-version-1903-command-prompt-opens-microsoft-stor
显然,当您没有安装/添加 python 到 PATH 变量时,在 CMD 中输入“python”会打开 Microsoft 商店并python.exe在C:\Users\GSI\AppData\Local\Microsoft\WindowsApps. 我猜我在第一次安装 python 时但在添加 PATH 变量之前尝试执行 python 代码。
我按照帖子中的说明删除了 python.exe 和 python3.exe 的“应用程序执行别名”。这样就删除了 WindowsApps 中的 exe 文件(我无法手动删除它们)。
但是,现在当我输入where python3CMD 时,我得到:
INFO: Could not find files for the given pattern(s).
它似乎没有获取我的 PATH 值。我尝试重新启动计算机,但没有成功
它应该可以工作,我测试了几次(例如:[SO]:PyWin32(226)和虚拟环境)。
是的,它们是两种不同的动物:
例子:
\n\n\n\n\n\n\nRun Code Online (Sandbox Code Playgroud)\ne:\\Work\\Dev\\StackOverflow\\q059885771>sopr.bat\n*** Set shorter prompt to better fit when pasted in StackOverflow (or other) pages ***\n\n[prompt]> set PY\nPYTHONPATH=e:\\Work\\Dev\\Utils\\current\n\n[prompt]> dir /b\n\n[prompt]> "c:\\Install\\pc064\\Python\\Python\\03.07.06\\python.exe" -c "import sys, venv;print(sys.version);print(venv)"\n3.7.6 (tags/v3.7.6:43364a7ae0, Dec 19 2019, 00:42:30) [MSC v.1916 64 bit (AMD64)]\n<module \'venv\' from \'c:\\\\Install\\\\pc064\\\\Python\\\\Python\\\\03.07.06\\\\lib\\\\venv\\\\__init__.py\'>\n\n[prompt]> "c:\\Install\\pc064\\Python\\Python\\03.07.06\\python.exe" -m venv\nusage: venv [-h] [--system-site-packages] [--symlinks | --copies] [--clear]\n [--upgrade] [--without-pip] [--prompt PROMPT]\n ENV_DIR [ENV_DIR ...]\nvenv: error: the following arguments are required: ENV_DIR\n\n[prompt]> time<nul\nThe current time is: 21:51:57.12\nEnter the new time:\n[prompt]> "c:\\Install\\pc064\\Python\\Python\\03.07.06\\python.exe" -m venv ".\\venv_dir"\n\n[prompt]> echo %errorlevel%\n0\n\n[prompt]> time<nul\nThe current time is: 21:52:10.54\nEnter the new time:\n[prompt]>\n[prompt]> dir /b\nvenv_dir\n\n[prompt]> "venv_dir\\Scripts\\python.exe"\nPython 3.7.6 (tags/v3.7.6:43364a7ae0, Dec 19 2019, 00:42:30) [MSC v.1916 64 bit (AMD64)] on win32\nType "help", "copyright", "credits" or "license" for more information.\n>>> ^Z\n\n\n[prompt]>\n
注意事项(注意事项):
\n\nwhere python3在控制台中键入\n\n当以上所有检查都通过后,您应该能够创建并使用(venv创建的)虚拟环境。
\n\n我看了一下问题中添加的URL : [SuperUser]: Typing \xe2\x80\x9cpython\xe2\x80\x9d on Windows 10 (version 1903) command提示符打开Microsoft商店(提到@Update、@TusharGautam、@ MattJecha,@Ramhound 很好的答案,包含有用的信息和资源)。
\n\n显然,这是因为应用程序执行别名中的 2 个与应用程序安装程序相关的项目。然后我更进一步,还从Microsoft Store安装了Python 3.7。两者(App Installer和Python 3.7)都将一些项目(包括可执行文件)放置在“ %USERPROFILE%\\AppData\\Local\\Microsoft\\WindowsApps ”中。有趣的是,它们的大小为0字节,而且它们既不是快捷方式也不是符号链接。我倾向于认为它们实际上并不存在于文件系统上,而是Win显示的某种“模拟条目”,并且表现得就像它们是真实的一样(与MS在显示.NET 程序集(它们是基本上是.dll文件)作为Windows 资源管理器中的目录)。
在下图中,我选择了 2 个盒装物品作为示例:
\n\n\n\n当检查一个时,另一个会自动取消选中,这是有道理的,因为两者都指向相同的“可执行文件”(python3.exe)。
\n\n\n\n\nRun Code Online (Sandbox Code Playgroud)\n[prompt]> :: Python3.7 (python3.exe - installed from Microsoft Store) checked\n[prompt]> dir "c:\\Users\\cfati\\AppData\\Local\\Microsoft\\WindowsApps\\py*"\n Volume in drive C is SSD0-WIN\n Volume Serial Number is F2CE-FA29\n\n Directory of c:\\Users\\cfati\\AppData\\Local\\Microsoft\\WindowsApps\n\n20/01/24 12:32 0 python3.exe\n20/01/24 12:12 <DIR> PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\n 1 File(s) 0 bytes\n 1 Dir(s) 197,737,488,384 bytes free\n\n[prompt]> python3 -c "import sys, os;print(\\"VER: {0:}\\nEXE: {1:}\\nCWD: {2:}\\nPyPATH: {3:}\\".format(sys.version, sys.executable, os.getcwd(), sys.path))"\nVER: 3.7.6 (tags/v3.7.6:43364a7ae0, Dec 19 2019, 01:54:44) [MSC v.1916 64 bit (AMD64)]\nEXE: C:\\Users\\cfati\\AppData\\Local\\Microsoft\\WindowsApps\\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\\python.exe\nCWD: e:\\Work\\Dev\\StackOverflow\\q059885771\nPyPATH: [\'\', \'e:\\\\Work\\\\Dev\\\\Utils\\\\current\', \'C:\\\\Program Files\\\\WindowsApps\\\\PythonSoftwareFoundation.Python.3.7_3.7.1776.0_x64__qbz5n2kfra8p0\\\\python37.zip\', \'C:\\\\Program Files\\\\WindowsApps\\\\PythonSoftwareFoundation.Python.3.7_3.7.1776.0_x64__qbz5n2kfra8p0\\\\DLLs\', \'C:\\\\Program Files\\\\WindowsApps\\\\PythonSoftwareFoundation.Python.3.7_3.7.1776.0_x64__qbz5n2kfra8p0\\\\lib\', \'C:\\\\Program Files\\\\WindowsApps\\\\PythonSoftwareFoundation.Python.3.7_3.7.1776.0_x64__qbz5n2kfra8p0\', \'C:\\\\Program Files\\\\WindowsApps\\\\PythonSoftwareFoundation.Python.3.7_3.7.1776.0_x64__qbz5n2kfra8p0\\\\lib\\\\site-packages\']\n\n[prompt]> echo %errorlevel%\n0\n\n[prompt]>\n[prompt]> :: App Installer (python3.exe) checked\n[prompt]> dir "c:\\Users\\cfati\\AppData\\Local\\Microsoft\\WindowsApps\\py*"\n Volume in drive C is SSD0-WIN\n Volume Serial Number is F2CE-FA29\n\n Directory of c:\\Users\\cfati\\AppData\\Local\\Microsoft\\WindowsApps\n\n20/01/24 12:35 0 python3.exe\n20/01/24 12:12 <DIR> PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\n 1 File(s) 0 bytes\n 1 Dir(s) 197,737,291,776 bytes free\n\n[prompt]> python3 -c "import sys, os;print(\\"VER: {0:}\\nEXE: {1:}\\nCWD: {2:}\\nPyPATH: {3:}\\".format(sys.version, sys.executable, os.getcwd(), sys.path))"\nAccess is denied.\n\n[prompt]> :: !!! "This app can\'t run on your PC" popped up !!!\n[prompt]> echo %errorlevel%\n5\n
请注意,可执行文件(“ C:\\Users\\cfati\\AppData\\Local\\Microsoft\\WindowsApps\\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\\python.exe ”)也是一个“模拟条目” ,真正的实际上位于“ %ProgramFiles%\\WindowsApps ”
\n\n来自[MS.DevBlogs]:谁将 Python 放入 Windows 10 May 2019 更新中?(重点是我的):
\n\n\n\n\n虽然 Python 仍然完全独立于操作系统,但每次安装 Windows 时都将包含
\npython可python3直接进入Python 商店页面的命令。
所以,你明白了,python3 实际上并不是 python3(当然,也适用于python )。有趣的是,在你的情况下它“有效”,而在我的情况下它抱怨(ERROR_ACCESS_DENIED)。
\n\n结论:
\n\n