【问题标题】:XCode not seeing python modulesXCode 没有看到 python 模块
【发布时间】:2012-08-18 03:52:50
【问题描述】:

首先让我说我对 Xcode、OS X 和安装 python 模块还很陌生。

当我尝试构建我的项目时,XCode 告诉我它找不到 python 模块:

  File "/Users/some_user/some_folder/create.py", line 2, in <module> 
    from peak.rules import abstract, when
ImportError: No module named peak.rules
Command /bin/bash failed with exit code 1

我已经安装了一个 python 模块,它说它安装正确。我可以验证它是否存在于我的python2.7/site-packages/ 目录中。我也做了which python,它给了我/Library/Frameworks/Python.framework/Versions/2.7/bin/python,并验证了python 正在使用该路径python install 来安装站点包,看起来它们位于/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/。我已经搜索了我的机器,但没有我知道的另一个 python 安装。我在安装模块后重新启动了 Xcode,但这并没有什么不同。我还将PYTHONPATH 设置为由which python 给出的相同路径指定的站点包目录。

我对这个问题的最佳猜测是我没有正确定义我的PYTHONPATH。这是我的整个.bash_profile 文件。

# Setting PATH for Python 2.7
# The orginal version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}"
export PATH

PYTHONPATH="$ {PYTHONPATH} : /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages"
export PYTHONPATH

【问题讨论】:

  • 您可能想要检查脚本使用了哪个 Python(第一行)。它应该匹配 which python 路径。
  • 脚本没有指定 python 版本,我假设 XCode 知道基于 PYTHONPATH 使用哪个 python。这是python脚本的前两行,脚本中的第二行是失败的地方:from os import path as ospath from peak.rules import abstract, when
  • 请粘贴脚本第一行的内容。
  • from os import path as

标签: python xcode pythonpath


【解决方案1】:

PYTHONPATH 的值并不表示要运行哪个python 可执行文件。相反,它是一种增加python 可执行文件在导入操作期间在哪些目录中查找模块的方法。 Apple 在 OS X 上发布了 Python 版本;这些解释器的路径在/usr/bin。从您的回溯 (/Library/Frameworks) 中的路径来看,您似乎已经安装了更新的 Python 2.7,可能从 python.org 下载。默认情况下,该 python 可能在/usr/local/bin 中安装了指向它的符号链接;其规范的bin 目录位于框架中,位于/Library/Frameworks/Python.framework/Versions/2.7/bin。虽然您的 shell 路径 $PATH 可能已设置为在搜索路径的前面包含该 bin 目录,以便在 shell 中找到较新的 python,但这可能不适用于 Xcode。换句话说,Xcode 使用的是系统 Python,而不是您安装的较新的 Python。您可能需要更改 Xcode 项目中的一些变量,以便首先在该路径中搜索该 Python(或使用解释器的绝对路径)。您应该删除指向site-libraryPYTHONPATH 环境变量。默认情况下,每个 Python 都会自动搜索其site-library。更多信息是here

更新:您可能在这里遇到更基本的问题。我没有使用 PEAKPEAK-rules 的经验,但请注意 Python 包索引中列出了两个单独的发行版。如果您只想使用 PEAK 规则,您似乎需要安装PEAK-rules 分发版,而安装 PyPI 中列出的 PEAK。要与系统 Python 一起使用,请尝试以下操作:

umask 022
sudo /usr/bin/easy_install-2.7 -m peak     # "uninstall" peak if installed
sudo /usr/bin/easy_install-2.7 peak-rules  # install peak-rules

如果您想使用较新的非系统 Python,只需安装并使用 easy_install 的副本(PyPI distribute)或 pip 即可。

【讨论】:

  • 我会试试这个东西,但是,我在 OS X 10.8 上,我相信 python 2.7 已经安装了。我可能在某个时候尝试过手动安装它,但此时我尝试了很多东西,我无法全部跟踪。
  • 10.8 确实随 Python 2.7 一起提供,但从您显示的标签(2012 年 4 月 9 日)来看,它来自 python.org 2.7.3 64 位/32 位安装程序。我知道:我构建了它 :=) 您可以通过键入 /usr/bin/python2.7 在 shell 中查看 Apple 提供的 Python。
  • 嗯,有道理,谢谢,我会在接下来的一两天回到我的机器前再试一次。
  • 我不知道如何告诉 Xcode 使用哪一个 python,我不需要 2.7.3,我可以使用 OS X 附带的那个,我是只是不确定如何将 Xcode 指向一个版本而不是另一个版本。
  • 谢谢内德! Peak-rules 确实安装在错误的目录下,使用sudo /usr/bin/easy_install-2.7 peak-rules 解决了这个问题。
【解决方案2】:

当我从 OS X 10.9 迁移到 10.10 时,我遇到了类似的问题。经过一番折腾,我发现 Python 有两个版本,我一直在使用旧版本。我在终端中输入了“which python”并将文件夹复制到 Xcode。

这个问题奇迹般地消失了。看看,这行得通……!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-26
    • 2019-01-29
    • 2021-04-29
    • 2018-07-09
    • 2016-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多