使用Windows从命令行调用Python脚本(在路径中的目录中)

使用Windows从命令行调用Python脚本(在路径中的目录中),python,windows,cmd,command-line,path,Python,Windows,Cmd,Command Line,Path,在Linux中,如果您在路径中的文件夹中创建一个具有+x权限的文件mycommand,其中包含一个Python shebang#,然后从命令行调用mycommand,无论当前目录如何,都能正常工作 如何在Windows上使用等效脚本?即,我有一个文件夹D:\myscripts\,它位于路径中,包含一些个人脚本,如mycommand.py 如何从命令行调用mycommand或者仅仅调用python mycommand,无论当前的工作目录是什么? TL;医生:我想避免不得不这样做 python

在Linux中,如果您在路径中的文件夹中创建一个具有+x权限的文件
mycommand
,其中包含一个Python shebang
#
然后从命令行调用
mycommand
,无论当前目录如何,都能正常工作


如何在Windows上使用等效脚本?即,我有一个文件夹
D:\myscripts\
,它位于路径中,包含一些个人脚本,如
mycommand.py

如何从命令行调用
mycommand
或者仅仅调用
python mycommand
,无论当前的工作目录是什么?

TL;医生:我想避免不得不这样做

python D:\myscripts\command.py
每次我想每天打电话时,请使用
D:\myscripts\

注意:.py文件与我的文本编辑器相关联(即,双击.py文件时,它将用文本编辑器打开),我希望保留该文件。

Solution 1 我终于做到了:

  • D:\myscripts\
    放入路径中(使用
    setx
    ,请参阅)

  • 创建一个批处理文件:
    D:\myscripts\mycommand.bat
    包含:

      @python d:\myscripts\mycommand.py
    
就这样


解决方案2 以下是来自@ErykSun的各种评论的解决方案:


  • 打开系统环境变量编辑器,确保“D:\myscripts”位于
    路径中(不要使用引号),而“.PY”位于
    路径中(不要使用引号)

  • 创建一个测试文件
    D:\myscripts\test\u command.py
    ,其中包含行
    import sys;打印(系统可执行文件);打印(sys.argv)

  • 在从资源管理器打开的新命令提示符中(以获取更新的环境变量),从另一个目录运行测试脚本,作为
    test\u command
    。如果它使用预期的Python安装运行,并且正确传递了命令行参数“spam”和“eggs”,那么就完成了

双击并在命令提示下运行时,shell将执行文件类型的默认操作。如果文件类型没有显式定义默认操作,shell将使用“打开”操作,如果没有定义,则使用文件类型的第一个定义操作,不管是什么。Python为其“Python.File”文件类型配置一个“open”操作,并为使用IDLE进行编辑配置附加的上下文菜单(右键单击)操作



你还可以选择其他方向。您可以使用shell链接。将“.LNK”添加到路径文本中,然后删除“.PY”。然后,对于要运行的每个脚本,在
D:\myscripts
中创建一个shell链接(.LNK快捷方式文件),该链接以“path\to\python.exe”“\path\to\script”的形式显式运行脚本。将working directory字段保留为空,以便它继承父进程的工作目录。例如,创建
D:\myscripts\test\u command.lnk
以运行
D:\myscripts\test\u command.py

在本例中,您将以test_命令的形式运行脚本,它将查找并执行“test_command.lnk”。要获得默认的升华编辑操作,您需要显式运行扩展名为“.py”的test_command.py


解决方案3 使用以下方法在
c:\python37\scripts\
中创建.exe文件:
但是它更复杂,因为它需要一个包等等。

你的意思是像“alisas”这样的东西来调用你的命令并把你带到某个目录吗?打开系统环境变量编辑器,确保“D:\myscripts”在路径中(不要使用引号),而“.PY”在路径中(不要使用引号)。创建一个测试文件“D:\myscripts\test_command.py”,其中包含一行
import sys;打印(系统可执行文件);打印(sys.argv)
。在从资源管理器打开的新命令提示符中(以获取更新的环境变量),从另一个目录以“test_command”的形式运行测试脚本。如果它使用预期的Python安装运行,并且命令行参数“spam”和“eggs”被正确传递,那么您就完成了。@ErykSun另外,为了增加一些难度,
.py
文件与SublimiteText相关联,即双击它们会用文本编辑器打开它们(我想保留这个)。(见编辑后的问题)。概述:1)
test_命令
有效(但在文本编辑器中打开它,我更愿意运行它)2)
python test_命令
:找不到文件。要简单地运行该文件,必须选择其中一个。对于双击并在命令提示下运行,shell将执行文件类型的默认操作。如果文件类型没有显式定义默认操作,shell将使用“打开”操作,如果没有定义,则使用文件类型的第一个定义操作,不管是什么。Python为其“Python.File”文件类型配置一个“open”操作,并为使用IDLE进行编辑配置其他上下文菜单(右键单击)操作。您可以使用shell链接。将“.LNK”添加到路径文本中,然后删除“.PY”。然后,对于要运行的每个脚本,在“D:\myscripts”中创建一个shell链接(.LNK快捷方式文件),该链接以“path\to\python.exe”“\path\to\script”的形式显式运行脚本。将working directory字段保留为空,以便它继承父进程的工作目录。例如,创建“D:\myscripts\test\u command.lnk”以运行“D:\myscripts\test\u command.py”。