我已经使用Homebrew在我的Mac上安装了Thrift:brew install thrift --with-python
这做了一些工作,并完成了w / o错误报告。我在我的道路上节俭。
我从教程中编写了一个简单的python客户端:( gen-py中有一些python thrift代码)
#!/usr/bin/python
import sys
sys.path.append("./gen-py")
from thrift import Thrift
from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol
# rest of program...
运行时出现此错误:
Traceback (most recent call last):
File "./hey.py", line 8, in <module>
from thrift import Thrift
ImportError: No module named thrift
我使用Homebrew正确安装了python吗?有没有办法可以验证python / thrift集成是否正确安装?
答案 0 :(得分:4)
原来(撰写本文时的当前版本)Thrift安装的Homebrew配方并未完全安装python的所有内容,特别是库。 (它确实成功安装了thrift命令行工具。)
我通过下载python发行版并在我的Mac上构建它来解决这个问题 - 但是因为我已经完成了brew安装,所以没有安装。我只想要python库。
我在这里遵循了建议:http://thrift-tutorial.readthedocs.org/en/latest/usage-example.html 我按照描述运行了“sudo python setup.py install”,这正确地(显然)安装了所需的库,然后就可以了。
答案 1 :(得分:1)
我也在macOS Mojave 10.14.1上遇到了这个问题。似乎原因是--with-python
将在其中安装python@2
和thrift
模块。但是,您使用的系统python
与python@2
不同。您可以通过brew list | grep python
进行验证,并且应该看到以下结果。
python
python@2
在删除python@2
(brew uninstall --ignore-dependencies python@2
)并从源代码安装python模块之后,应该可以使用。
git clone https://github.com/apache/thrift.git
cd thrift/lib/py
sudo python setup.py install
有关原因的更多详细信息,请参阅this post。
答案 2 :(得分:0)
删除 if q_col_list == '*':
cursor_query = sql.SQL("""SELECT * from {q_tab_name} WHERE {q_where_col} LIKE {q_wherel_str}""").format(
q_tab_name=sql.Identifier(q_tab_name),
q_where_col=sql.Identifier(q_where_col),
q_wherel_str=sql.Literal(q_wherel_str),
)
else:
cursor_query = sql.SQL("""SELECT {q_col_list} from {q_tab_name} WHERE {q_where_col} LIKE {q_wherel_str}""").format(
q_col_list = sql.Identifier(q_col_list),
q_tab_name = sql.Identifier(q_tab_name),
q_where_col = sql.Identifier(q_where_col),
q_wherel_str = sql.Literal(q_wherel_str),
)
cursor.execute(cursor_query)
python@2
对我不起作用。实际上,我必须重新安装(brew uninstall --ignore-dependencies python@2)
brew install python@2
为我工作。
我的系统是OSX Mojave和python 2.7。
pip install thrift
得到以下结果:
brew list | grep python
答案 3 :(得分:0)
我没有使用Mac / Homebrew,但是这是我解决此问题的方法:
我正在使用Linux,并且我的Thrift服务器在PyCharm中运行良好,但是从命令行运行时出现 ModuleNotFoundError:没有名为“ thrift”的模块错误。
事实证明,尽管我在系统上安装了Thrift,但并未使用Pip进行安装。我跑完之后:
点安装节俭
...一切正常。