如何找到python3模块的位置并调试导入程序
我正在MacbookPro(10.9.5)上使用Python 3.4.2。代码来自我在尝试用python3运行脚本时遇到了一个奇怪的错误。 代码如下,但我认为这不是问题所在。这可能是一个模块路径问题,但从我的调试来看不是100%确定的 我可以在空闲状态下运行代码,但不能从cmd行运行代码,使用shebang或python3“脚本名称”运行 我们可以在下面看到,pip3和python3都位于/usr/local/bin中。我们还可以看到pyperclip模块已经安装。然而,当从cmd行运行脚本时,它说它找不到模块,即使它已安装 我在终端上运行了这个:如何找到python3模块的位置并调试导入程序,python,macos,python-3.x,pythonpath,pyperclip,Python,Macos,Python 3.x,Pythonpath,Pyperclip,我正在MacbookPro(10.9.5)上使用Python 3.4.2。代码来自我在尝试用python3运行脚本时遇到了一个奇怪的错误。 代码如下,但我认为这不是问题所在。这可能是一个模块路径问题,但从我的调试来看不是100%确定的 我可以在空闲状态下运行代码,但不能从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'
是否有人知道我的路径可能发生了什么,或者我可以在脚本中或从终端运行哪些其他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)
一些解决方案:
export PYTHONPATH=//Library/Frameworks/Python.framework/Versions3.4/lib/python3.4/site-packages
在终端中运行脚本之前
或
将此添加到代码中(开头):
或者(最简单、最有效,因为您只需执行一次)
将/usr/local/lib/python3.4/site包链接到/Library/Frameworks/Python.framework/Versions3.4/lib/python3.4/site包
:
sudo ln -s /Library/Frameworks/Python.framework/Versions3.4/lib/python3.4/site-packages /usr/local/lib/python3.4/site-packages
让脚本打印sys.path,并检查这些文件夹。@samuellittly-thx获取提示。它正在寻找两个不同的位置,但我不知道为什么。它关注的是Library/Frameworks/Python.framework/Versions 3.4/lib/python3.4/site-packages(这里是工作/空闲的外观)和/usr/local/lib/python3.4/site-packages(不工作,看起来是空的。这里是终端外观)。你能告诉我如何让python3从终端看第一个位置吗?谢谢。如果同时安装了python2和pytho3,我还可以使用PYTHONPATH环境变量吗?我还没有尝试b/c,因为我安装了两个版本,我担心我可能会比我修复的更糟。然后尝试最后一个解决方案:)。
import sys;
sys.path.insert(0, "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