蟒蛇 - ATBS 附录 B - 在 C 中找到“__main__”模块:\\ 路径错误

我正在尝试完成附录B自动化无聊的东西 - “在Windows上运行Python程序”,但是当我WIN-是脚本和argv时,我得到错误“找不到C:\ 中的'__主__'模块'路径。


我已经创建了.py脚本以及批处理文件,更改了系统变量路径,但仍然无法让程序从WIN-R运行。


我的 pw.py 脚本如下:


#! /usr/bin/env python3

# pw.py - An insecure password locker program.


PASSWORDS = {'email': 'F7min1BDDuvMJuxESSKHFhTxFtjVB6',

                'blog': 'VmALvQyKAxiVH5G8v01if1MLZF3sdt',

                'luggage': '12345'}


import sys

import pyperclip


if len(sys.argv) < 2:

    print('Usage: python pw.py [account] - copy account password')

    sys.exit()


account = sys.argv[1]   #first command line arg is the account name


if account in PASSWORDS:

    pyperclip.copy(PASSWORDS[account])

    print('Password for ' + account + ' copied to clipboard.')

else:

    print('There is no account named ' + account) 

我的pw.bat文件如下:


@py.exe C:\Users\lukev\PythonScripts %*

@pause

当我在 WIN-R 中运行时,我收到以下错误:pw emailC:\Users\lukev\AppData\Local\Programs\Python\Python38-32\python.exe: can't find '__main__' module in 'C:\\Users\\lukev\\PythonScripts'


从我的研究中,我发现shebang线不应该像书中描述的那样,而应该像书中描述的那样,另一种可能性是,如果我安装了多个版本的Python,但是我没有安装其他版本,仍然有问题。#! /usr/bin/env python3


以下是python文件,批处理文件,系统环境变量和错误消息的屏幕截图:

pw.py

啪.bat

系统变量

错误信息


Qyouu
浏览 94回答 1
1回答

DIEA

您使用@py.exe&nbsp;C:\Users\lukev\PythonScripts&nbsp;%*在批处理文件中。要传递到的路径是文件夹路径。py.exe这将创建一个错误:C:\Users\lukev\AppData\Local\Programs\Python\Python38-32\python.exe:&nbsp;can't&nbsp;find&nbsp;'__main__'&nbsp;module&nbsp;in&nbsp;'C:\\Users\\lukev\\PythonScripts'错误是精确的。路径是文件夹路径,因此Python所做的是查找入口点。如图所示,该入口点是 。如果找不到入口点,则会显示错误消息。__main__.py如果要执行文件,请直接执行它:@py.exe&nbsp;C:\Users\lukev\PythonScripts\pw.py&nbsp;%*要了解模块入口点,请创建一个名为 的文件夹,并在名为 的目录中创建一个文件。在此文件中插入以下代码:__main__C:\PythonExecutable__main__.pyimport sysif __name__ == '__main__':&nbsp; &nbsp; # Check command line arguments.&nbsp; &nbsp; if len(sys.argv) > 1:&nbsp; &nbsp; &nbsp; &nbsp; if sys.argv[1] == '-h':&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print('I am here to help')&nbsp; &nbsp; &nbsp; &nbsp; else:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for index, item in enumerate(sys.argv):&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print(index, item)&nbsp; &nbsp; else:&nbsp; &nbsp; &nbsp; &nbsp; print('I am ', __name__)在命令提示符下输入一些命令:C:\> py PythonExecutableI am&nbsp; __main__C:\> py PythonExecutable -hI am here to helpC:\> py PythonExecutable arg1 arg2 arg3 "I am the fourth"0 PythonExecutable1 arg12 arg23 arg34 I am the fourthC:\>不应用 中的 shebang 行,因为不会从此文件中读取。__main__.pypy.exe
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python