gpt4 book ai didi

python - 使用 "pythonw"(而不是 "python")运行应用程序时找不到模块

转载 作者:太空宇宙 更新时间:2023-11-04 03:41:52 26 4
gpt4 key购买 nike

我试过这个最小的例子:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
return 'Hello World!'

if __name__ == '__main__':
app.run(debug = True)

当我尝试 python hello.py 时,一切顺利。但是,当我尝试从 Textmate (Shift + Cmd + R) 运行它时,会抛出一个错误:

Traceback (most recent call last):
File "/Users/user/EventFeed/hello.py", line 1, in <module>
from flask import Flask
ImportError: No module named flask

Textmate 调用 pythonw 而不是 python。当我自己尝试 pythonw 时,抛出了同样的错误。

man pythonw 指出,从 Python 2.5 开始,python 和 pythonw 是可以互换的,尽管在​​这种情况下它们似乎并非如此。

你知道会发生什么吗?

(问题 Code that works with python and not with pythonw 尽管标题相似,但并未回答该问题。)

最佳答案

问题是你的 pythonw和你的 python没有指向相同的 Python 安装。

为什么?

很可能是因为您安装了第二个 Python 2.7,它不包含过时的 pythonw ,但 Apple 的预装 Python 2.7 绝对确实包含它。

检查这个的最快方法是 which命令。例如,在我的一台机器上:

$ which python
/usr/local/bin/python
$ which pythonw
/usr/bin/pythonw

第一个是指向 Homebrew 安装的 Python 2.7 的符号链接(symbolic link),而第二个是 Apple 的 Python 2.7。您的具体细节可能有所不同;第一个可能是 /Library/Frameworks/Python.framework/Versions/2.7/bin/python 的符号链接(symbolic link),或实际存在于 /usr/local/bin 中的包装器可执行文件, 或者它可能在 /opt/local 中等。关键是它们不在同一个目录中。

无论如何,您的两个单独安装的 Python 不会共享相同的站点包(它们不应该),因此您为第二个安装了 Flask 这一事实对 Apple 安装没有帮助.您可以通过运行它们并打印出 sys.path 来验证这一点:

$ python
>>> import sys
>>> sys.path
['', '/usr/local/lib/python2.7/site-packages', …]
>>> ^D
$ pythonw
>>> import sys
>>> sys.path
['', '/Library/Python/2.7/site-packages', …]
>>> ^D

无论如何,最简单的解决方案是将您的编辑器配置为运行python而不是 pythonw — 或者,更好的是,给它一个像 /usr/local/bin/python2.7 这样的 Python 解释器的绝对路径。以绝对确保您知道自己在运行什么。

(我不是很了解 TextMate,但是从 this source 看来它有一个名为 TM_PYTHON 的设置应该控制这个……)

关于python - 使用 "pythonw"(而不是 "python")运行应用程序时找不到模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26049778/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com