繁体   English   中英

Python3.7 venv 不创建虚拟环境目录

[英]Python3.7 venv does not Create Virtual Environment Directory

我正在尝试使用以下方法在 Windows 中创建一个虚拟环境:

python3 -m venv <dir-name>

运行上述命令后,在cmd中查看当前目录的内容时,没有看到venv目录出现。 该命令不会引发任何错误。

这个人好像有同样的问题: Python venv not created virtual environment

但是接受的答案是重新安装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

当您没有安装/添加到 PATH 变量的 python 时,显然在 CMD 中键入“python”会打开 Microsoft 商店并在C:\\Users\\GSI\\AppData\\Local\\Microsoft\\WindowsApps创建一个python.exe文件。 我猜我在第一次安装 python 时尝试执行 python 代码,但在添加 PATH 变量之前。

我按照帖子中的说明删除了 python.exe 和 python3.exe 的“应用程序执行别名”。 这摆脱了 WindowsApps 中的 exe 文件(我无法手动删除它们)。

但是,现在当我在 CMD 中键入where python3时,我得到: INFO: Could not find files for the given pattern(s).

它似乎没有获取我的 PATH 值。 我尝试重新启动计算机但没有运气

它应该可以工作,我对其进行了多次测试(例如[SO]: PyWin32 (226) 和虚拟环境)。
是的,它们是两种不同的动物:

例子:

 e:\\Work\\Dev\\StackOverflow\\q059885771>sopr.bat *** Set shorter prompt to better fit when pasted in StackOverflow (or other) pages *** [prompt]> set PY PYTHONPATH=e:\\Work\\Dev\\Utils\\current [prompt]> dir /b [prompt]> "c:\\Install\\pc064\\Python\\Python\\03.07.06\\python.exe" -c "import sys, venv;print(sys.version);print(venv)" 3.7.6 (tags/v3.7.6:43364a7ae0, Dec 19 2019, 00:42:30) [MSC v.1916 64 bit (AMD64)] <module 'venv' from 'c:\\\\Install\\\\pc064\\\\Python\\\\Python\\\\03.07.06\\\\lib\\\\venv\\\\__init__.py'> [prompt]> "c:\\Install\\pc064\\Python\\Python\\03.07.06\\python.exe" -m venv usage: venv [-h] [--system-site-packages] [--symlinks | --copies] [--clear] [--upgrade] [--without-pip] [--prompt PROMPT] ENV_DIR [ENV_DIR ...] venv: error: the following arguments are required: ENV_DIR [prompt]> time<nul The current time is: 21:51:57.12 Enter the new time: [prompt]> "c:\\Install\\pc064\\Python\\Python\\03.07.06\\python.exe" -m venv ".\\venv_dir" [prompt]> echo %errorlevel% 0 [prompt]> time<nul The current time is: 21:52:10.54 Enter the new time: [prompt]> [prompt]> dir /b venv_dir [prompt]> "venv_dir\\Scripts\\python.exe" Python 3.7.6 (tags/v3.7.6:43364a7ae0, Dec 19 2019, 00:42:30) [MSC v.1916 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> ^Z [prompt]>

注意事项(注意事项):

  • 确保事情实际上是你认为的那样:使用完整路径就像我对Python可执行文件所做的那样)。 要查看在您的情况下调用了什么解释器,请在控制台中输入where python3
    • 也可能将其应用于环境目录
  • 将路径dblquotes ( " ${SOME_PATH} " ) 中,因为它们可能包含空格(并且命令解释器会将SPACE后面的部分解释为前面那个的参数)
  • 检查命令返回码
  • 检查可能影响行为的环境变量(例如PYTHONPATH
  • 当然, Python应该是有效的(安装过程中没有遇到错误,之后没有删除/修改文件,......)

当上述所有检查都通过时,您应该能够创建和使用( venv创建的)虚拟环境。

更新 #0

我查看了问题中添加的URL[SuperUser]: Typing “python” on Windows 10 (version 1903) command prompt opens Microsoft Store (提到@Update、@TusharGautam、@MattJecha、@Ramhound 很棒的答案,包含有用的信息和资源)。

显然,这是因为来自App execution aliases的 2 App Installer相关项目。 然后我更进一步,还从Microsoft Store安装了Python 3.7
两者( App InstallerPython 3.7 )都在“ %USERPROFILE%\\AppData\\Local\\Microsoft\\WindowsApps ”中放置了一些项目(包括可执行文件)。 有趣的是它们的大小为0字节,它们既不是快捷方式也不是符号链接 我倾向于认为它们实际上并不存在于文件系统中,而是Win显示的某种“模拟条目”,并且表现得好像它们是真实的(与MS在显示.NET 程序集时所做的相同(基本上是.dll文件)作为Windows 资源管理器中的目录)。

在下图中,我选择了 2 个盒装物品作为示例:

图像0

检查一个时,另一个会自动取消选中,这是有道理的,因为两者都指向同一个“可执行文件”( python3.exe )。

 [prompt]> :: Python3.7 (python3.exe - installed from Microsoft Store) checked [prompt]> dir "c:\\Users\\cfati\\AppData\\Local\\Microsoft\\WindowsApps\\py*" Volume in drive C is SSD0-WIN Volume Serial Number is F2CE-FA29 Directory of c:\\Users\\cfati\\AppData\\Local\\Microsoft\\WindowsApps 20/01/24 12:32 0 python3.exe 20/01/24 12:12 <DIR> PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0 1 File(s) 0 bytes 1 Dir(s) 197,737,488,384 bytes free [prompt]> python3 -c "import sys, os;print(\\"VER: {0:}\\nEXE: {1:}\\nCWD: {2:}\\nPyPATH: {3:}\\".format(sys.version, sys.executable, os.getcwd(), sys.path))" VER: 3.7.6 (tags/v3.7.6:43364a7ae0, Dec 19 2019, 01:54:44) [MSC v.1916 64 bit (AMD64)] EXE: C:\\Users\\cfati\\AppData\\Local\\Microsoft\\WindowsApps\\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\\python.exe CWD: e:\\Work\\Dev\\StackOverflow\\q059885771 PyPATH: ['', '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'] [prompt]> echo %errorlevel% 0 [prompt]> [prompt]> :: App Installer (python3.exe) checked [prompt]> dir "c:\\Users\\cfati\\AppData\\Local\\Microsoft\\WindowsApps\\py*" Volume in drive C is SSD0-WIN Volume Serial Number is F2CE-FA29 Directory of c:\\Users\\cfati\\AppData\\Local\\Microsoft\\WindowsApps 20/01/24 12:35 0 python3.exe 20/01/24 12:12 <DIR> PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0 1 File(s) 0 bytes 1 Dir(s) 197,737,291,776 bytes free [prompt]> python3 -c "import sys, os;print(\\"VER: {0:}\\nEXE: {1:}\\nCWD: {2:}\\nPyPATH: {3:}\\".format(sys.version, sys.executable, os.getcwd(), sys.path))" Access is denied. [prompt]> :: !!! "This app can't run on your PC" popped up !!! [prompt]> echo %errorlevel% 5

注意,可执行文件(“ C:\\Users\\cfati\\AppData\\Local\\Microsoft\\WindowsApps\\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\\python.exe ”)也是一个“模拟入口”,真正的实际上位于“ %ProgramFiles%\\WindowsApps

来自[MS.DevBlogs]:谁将 Python 放入 2019 年 5 月 10 日的 Windows 更新中? 重点是我的):

虽然 Python 继续保持完全独立于操作系统,但每次安装 Windows都将包含pythonpython3命令,这些命令将您直接带到Python 商店页面

所以,你去了, python3实际上并不是python3 (当然,也适用于python )。 有趣的是,在你的情况下它“有效”,而在我的情况下它抱怨( ERROR_ACCESS_DENIED )。

结论

  • 我必须坚持始终使用完整路径 这样您就不会受到操作系统中发生的变化的影响(好吧,您的文件可能会被删除或损坏,但随后您会遇到更大的问题)
  • 每次指定完整路径很快就会变得非常烦人,这就是可以/应该使用PATH环境变量的原因。 当然,这在大约90%以上的情况下工作正常(并显着改善了体验),但也有一些(例如,当其他已安装的应用程序/工具也提供Python 时,将它们的dir s 添加到PATH 中)可以触发有趣的结果

确保您处于管理员模式(Windows+X 按钮 > PowerShell(Admin) > 单击 YES); 这应该带你去

PS C:\WINDOWS\system32>

移至安装 Python 的位置。 然后键入以下内容:

python -m venv C:\<your-existing-project-directory>\<venv-name-u-want-to-use>

VENV 将在 C:\\

更多信息: https : //docs.python.org/3/library/venv.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM