【问题标题】:Executable file in venv\Scripts not recognised as a commandvenv\Scripts 中的可执行文件未被识别为命令
【发布时间】:2019-09-18 14:42:43
【问题描述】:

我已经克隆了一个 github 存储库 - pypastry - 到我的 Windows 机器上,并运行 pip install -e pypastry 将其安装在我的虚拟环境中,所以项目结构是这样的:

│-- pypastry
|-- venv
    |-- Scripts
        |-- pastry

可执行文件名为“pastry”,正如我所料,它位于 venv\Scripts 中,但命令提示符无法识别它,我收到错误消息:

'pastry' is not recognized as an internal or external command, operable program or batch file

我认为 PATH 没有问题,因为 PATH 中的第一项是 C:\Users\User\Documents\pypastry\venv\Scripts

这是可执行文件本身:

#!c:\users\user\documents\pypastry\venv\scripts\python.exe
# EASY-INSTALL-DEV-SCRIPT: 'pypastry==0.0.1','pastry'
__requires__ = 'pypastry==0.0.1'
__import__('pkg_resources').require('pypastry==0.0.1')
__file__ = 'C:\\Users\\User\\Documents\\pypastry\\pypastry\\pastry'
with open(__file__) as f:
    exec(compile(f.read(), __file__, 'exec'))

任何人都可以在此文件中发现任何可能意味着它在 Windows 上未被识别为可执行文件的任何内容或想到其他任何可能出错的地方吗?

编辑添加:

如果我使用显式 python 调用 (python pypastry\pastry) 运行文件,它可以工作,但我不想这样做,因为它会产生其他问题。

【问题讨论】:

    标签: python windows console-application virtualenv


    【解决方案1】:

    Windows 告诉您它在您的 PATH 中找不到名为“pastry”(pastry.exepastry.compastry.batpastry.cmd ...)的可执行文件。

    但是pastry.py 是。不是吗?问题是您的 Windows 未配置为将 .py 识别为可执行扩展名。

    要在不显式调用python.exe 的情况下在Windows 中运行python 脚本,您首先需要将.py 扩展名关联到可执行python。然后将.py 扩展添加为可执行扩展。

    您分三步完成:

    1. 将 .py 扩展名与 PythonFile 文件类型相关联

       ASSOC .py=PythonFile
      
    2. 将 PythonFile 关联到您的 python.exe 可执行文件

       FTYPE PythonFile="c:\users\user\documents\pypastry\venv\scripts\python.exe" "%1" %*
      
    3. 将 .py 文件扩展名关联为默认的可执行扩展名之一

       SET PATHEXT=.py;%PATHEXT%
      

    【讨论】:

    • 这是一个有用的解释,我已按顺序执行了步骤 1、2 和 3。 .py 现在在我的 PATHEXT 中(实际上是两次):.py;.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY ;.PYW 问题是我仍然收到相同的错误消息 - 我想知道问题是否是该文件只是称为“糕点”,没有 .py 扩展名?
    • 避免扩展是pathext的目的,不能从这里调试你的安装,你确定你的pathext是实际使用的吗?
    • 我不确定如何检查 pathext 是否是实际使用的.. 可执行文件本身的顶部有一个 shebang:#!/usr/bin/env python ...我不确定这是否会影响我的命令提示符将其识别为可执行文件的能力,因为这似乎是一个特定于 unix 的行。但仍然有同样的问题
    猜你喜欢
    • 1970-01-01
    • 2018-06-04
    • 1970-01-01
    • 1970-01-01
    • 2017-05-15
    • 1970-01-01
    • 2020-02-02
    • 2021-08-14
    • 1970-01-01
    相关资源
    最近更新 更多