gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 12:59:45 31 4
gpt4 key购买 nike

我正在尝试使用以下方法在 Windows 中创建一个虚拟环境:
python3 -m venv <dir-name>
运行上述命令后,在cmd中查看当前目录的内容时,没有看到venv目录出现。该命令不会引发任何错误。

这个人似乎也遇到了同样的问题:
Python venv not creating 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 .我不确定如何修复我的环境变量。是否需要重启?我有很多东西在运行,但如果有必要我可以重新启动

编辑 2:我被要求发布以下命令输出的屏幕截图。如您所见,当我仅使用“python3”运行它们时没有输出。当我使用安装 exe 的完整路径运行命令时,我确实得到了输出:

enter image description here

编辑 3:我在这里找到了一个有用的帖子:
https://superuser.com/questions/1437590/typing-python-on-windows-10-version-1903-command-prompt-opens-microsoft-stor

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

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

但是,现在当我输入 where python3 时在 CMD 中,我得到:INFO: Could not find files for the given pattern(s).
它似乎没有获取我的 PATH 值。我尝试重新启动计算机但没有运气

最佳答案

它应该可以工作,我对其进行了多次测试(例如: [SO]: PyWin32 (226) and virtual environments )。是的,它们是 2 不同 动物种类:

  • [Python 3.Docs]: venv - Creation of virtual environment
  • [PyPA.VirtualEnv]: Virtualenv .

  • 例子:

    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

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

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

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

    Img0

    当检查一个时,另一个会自动取消选中,这是有道理的,因为两者都指向同一个“可执行文件”(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]: Who put Python in the Windows 10 May 2019 Update? ( 重点 是我的):

    While Python continues to remain completely independent from the operating system, every install of Windows will include python and python3 commands that take you directly to the Python store page.



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

    结论 :
  • 我一定要坚持始终使用完整路径 .这样您就不会受到操作系统中发生的变化的影响(好吧,您的文件可能会被删除或损坏,但随后您会遇到更大的问题)
  • 每次都指定完整路径,很快就会变得很烦人,这就是为什么路径 可以/应该使用环境变量。当然,这在大约 90% 以上的情况下工作正常(并显着改善了体验),但也有一些(例如,当其他安装的应用程序/工具也提供 Python 时,将它们的目录添加到 PATH 中)它可以触发有趣的结果
  • 关于Python3.7 venv 不创建虚拟环境目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59885771/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com