【问题标题】:How to find the location of modules for python3 and debug an ImportError如何找到 python3 模块的位置并调试 ImportError
【发布时间】:2015-12-03 23:40:02
【问题描述】:

我在 MacbookPro (10.9.5) 上使用 Python 3.4.2。代码来自Automate the Boring Stuff with Python by Al Sweigart 尝试在 python3 中运行脚本时出现一个奇怪的错误。 代码如下,但我认为这不是问题。这可能是模块路径问题,但我的调试不能 100% 确定。

我可以在 Idle 中运行代码,但我无法从 cmd 行运行代码,使用 shebang 或 python3“脚本名称”运行。

我们可以在下面看到,pip3 和 python3 都在 /usr/local/bin 中。我们还可以看到 pyperclip 模块已安装。但是,从 cmd 行运行脚本时,它说找不到模块,即使它已安装。

我从终端运行了这个:

$ which pip3
/usr/local/bin/pip3
$ which python3
/usr/local/bin/python3
$ pip3 freeze | grep clip
pyperclip==1.5.24
$ python3 pw.py 
Traceback (most recent call last):
  File "pw.py", line 5, in <module>
    import pyperclip
ImportError: No module named 'pyperclip'

但是,在空闲状态下,代码运行良好,不会出现未找到模块的错误:

>>> ================================ RESTART ================================
>>> 
Password for email copied to clipboard
>>> 

有谁知道我的路径可能会发生什么,或者我可以在我的脚本或终端中运行哪些其他 cmds 以确定发生了什么?

下面的测试代码

#!/usr/local/bin/python3
# pw.py - an insecure password locker program

import sys
import pyperclip

PASSWORDS = {'email': 'F7minlBDDuvMJuxESSKHFhTxFtjVB6',
      'blog': 'VmALvQyKAxiVH5G8v01if1MLZF3sdt',
      'luggage': '12345'}

account = "email"

if account in PASSWORDS:
   pyperclip.copy(PASSWORDS[account])
   print ('Password for ' + account + ' copied to clipboard')
else:
   print ('There is no account named ' + account)

【问题讨论】:

  • 让您的脚本打印 sys.path,并检查这些文件夹。
  • @SamuelLittley - 感谢您的提示。它正在查看 2 个不同的位置,但我不知道为什么。它正在查看 Library/Frameworks/Python.framework/Versions 3.4/lib/python3.4/site-packages (工作/空闲看起来在这里)和 /usr/local/lib/python3.4/site-packages (不工作和看起来空的。终端看起来在这里)。你能告诉我如何让 python3 从终端查看第一个位置吗?

标签: python macos python-3.x pythonpath pyperclip


【解决方案1】:

一些解决方案:

export PYTHONPATH=//Library/Frameworks/Python.framework/Versions3.4/lib/python3.4/site-packages

在终端运行脚本之前

或 将此添加到您的代码中(在开头):

import sys;
sys.path.insert(0, "Library/Frameworks/Python.framework/Versions3.4/lib/python3.4/site-packages")

OR(最简单,最有效,因为您只需要这样做一次)

/usr/local/lib/python3.4/site-packages链接到/Library/Frameworks/Python.framework/Versions3.4/lib/python3.4/site-packages

sudo ln -s /Library/Frameworks/Python.framework/Versions3.4/lib/python3.4/site-packages /usr/local/lib/python3.4/site-packages

【讨论】:

  • 谢谢。如果我同时安装了 python2 和 3,我还能使用 PYTHONPATH 环境变量吗?我还没有尝试过 b/c,因为我已经安装了这两个版本,恐怕我可能会搞砸比我修复的更多。
  • 然后尝试最后一个解决方案:)。
猜你喜欢
  • 1970-01-01
  • 2020-08-13
  • 2010-09-21
  • 2011-05-18
  • 2018-01-20
  • 1970-01-01
  • 1970-01-01
  • 2019-05-24
相关资源
最近更新 更多