Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何找到python3模块的位置并调试导入程序_Python_Macos_Python 3.x_Pythonpath_Pyperclip - Fatal编程技术网

如何找到python3模块的位置并调试导入程序

如何找到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行运行脚本时,

我正在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