首页 > 解决方案 > .py 文件中导入的模块 pyperclip 在 Windows 命令提示符下运行时显示 ModuleNotFoundError

问题描述

我对 python 很陌生,对在我熟悉的 vs code 终端之外的任何地方执行 python 代码都是全新的。

我正在阅读并关注 Al Sweigart 的 Automate the Boring Stuff With Python Book,我在第 9 章,其中有一个创建多剪贴板的后续项目。

基本上,该项目正在创建一个程序,该程序使用 shelve、sys 和 pyperclip 模块将来自剪贴板的文本以字典格式存储在外部文件中。这是书中解释的:

该程序会将每个剪贴板文本保存在一个关键字下。例如,当您运行 py mcb.pyw save spam 时,剪贴板的当前内容将与关键字 spam 一起保存。此文本稍后可以通过运行 py mcb.pyw spam 再次加载到剪贴板。如果用户忘记了他们拥有的关键字,他们可以运行 py mcb.pyw list 将所有关键字的列表复制到剪贴板。

这是程序的作用:

检查关键字的命令行参数。如果参数是 save,则剪贴板内容将保存到关键字。如果参数是列表,则所有关键字都将复制到剪贴板。否则,关键字的文本将复制到剪贴板。

我对此完全陌生,所以从命令提示符执行有点吓人。我所做的是在命令提示符下使用 cd 进行导航。然后我输入“py.exe mcb226.pyw”(我的命名略有不同)。该文件确实运行但我收到此错误(在命令提示符中):

Traceback (most recent call last):
   File "mcb226.pyw", line 10, in <module>
      import pyperclip
ModuleNotFoundError: No module named 'pyperclip'

这让我很困惑,因为。这甚至意味着什么?我安装了 pyperclip(我通过 Anaconda 提示系统安装,我通过 Anaconda 运行 vs 代码)。我必须通过命令提示符安装它吗?

这是我在 mcb226.pyw 文件中的代码:

#! python3
# mcb.pyw - Saves and loads pieces of text to the clipboard
# usage: py.exe mcb226.pyw save <keyword> - Saves clipboard to keyword
#        py.exe mcb226.pyw <keyword> - Loads keyword to clipboard
#        py.exe mcb226.pyw list - loads all keywords to clipboard

import shelve
import sys
import pyperclip

path = 'C:/Users/adamt/Desktop/testfolder/mcb/mcb'
mcbShelf = shelve.open(path)
if len(sys.argv) == 3 and sys.argv[1].lower() == 'save':
    mcbShelf[sys.argv[2]] = pyperclip.paste()
elif len(sys.argv) == 2:
    # if the sys. argument list is 2, this must either be 'list' or to ask to get a variable, since its only mcb226.pyw list or mcb225.pyw spam
    if sys.argv[1].lower() == 'list':
        pyperclip.copy(str(list(mcbShelf.keys())))
    elif sys.argv[2] in mcbShelf:
        pyperclip.copy(mcbShelf[sys.argv[1]])

mcbShelf.close()

标签: pythoncommand-line

解决方案


pyperclip应该安装在您运行代码的环境中。pyperclip软件包未安装在site-packages您用于运行脚本的 python 安装目录中。

要解决此问题,请在运行代码的终端上运行以下命令。

pip install pyperclip

推荐阅读