0

我对 Python 很陌生,我正在阅读“用 Python 自动化无聊的东西”一书(https://automatetheboringstuff.com/chapter6/)。我正在处理 Password Locker 项目,但在使用 pyperclip 模块时遇到了困难。我在 Mac OS X Yosemite 上运行 Python 3.6.2。

当我尝试通过终端运行我的程序时,我收到以下消息:

Traceback (most recent call last):
  File "./pw.py", line 8, in <module>
    import sys, pyperclip
ModuleNotFoundError: No module named 'pyperclip'

但是,我已经安装了 pyperclip,并在尝试使用“pip3 install pyperclip”时收到此消息:

pip3 install pyperclip
Requirement already satisfied: pyperclip in     
/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages

它在壳牌中对我来说很好:

>>> import pyperclip
>>> pyperclip.copy('hello')
>>> pyperclip.paste()
'hello'

除了实际密码外,我相信我的程序与书中的程序相同:

#! /usr/bin/env python3
# pw.py - An insecure password locker program.

PASSWORDS = {'email': '12345',
             'blog' : '54321',
             'luggage': '123456789' }

import sys, 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) 

我一直试图找出为什么会发生这种情况,但无法弄清楚。同样,我对 Python 非常陌生,任何有用的见解都将不胜感激!谢谢!

4

3 回答 3

1

您提到 pyperclip 安装在
/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages

在您的脚本中,print(sys.path)验证该目录可用于您的程序进行导入。如果解释器和库仍然不匹配,请考虑使用 conda 或 virtualenv 创建环境。

顺便说一句,请删除该import行,并import在 shebang 之后添加两个新行,以便它们出现在 PASSWORDS 分配之前。这只是 flake8 风格的东西。

另外,考虑使用argparseclick而不是阅读sys.argv[1]. 一方面,您可以免费获得“--help”。

于 2018-01-04T03:30:03.793 回答
0

#! /usr/bin/env python改用 python2在运行时更改 shebang 。

于 2018-01-11T22:17:12.150 回答
0

我真的很难将 pyperclip 安装在我的 python 发行版的正确环境中。我已经使用 anaconda navigator 安装了 pythong。加上 mac 上的默认 python 加上其他一些 python 让我陷入了困境。(可能与您面临的情况相似。

我的解决方法是找出我的 IDE (Spyder 4) 正在使用哪个 python 解释器,然后从那里运行引用该位置的安装命令。

更简单地说:

pip install pyperclip

变成了

/usr/local/anaconda3/bin/pip install pyperclip

这似乎为我解决了这个问题。祝所有面临类似情况的其他人好运。

于 2020-05-17T04:37:21.007 回答