c python h 關於c調python h的坑

2021-10-11 00:10:01 字數 1503 閱讀 9344

0x01 為毛用python.h?

python.h是基於python-devel的開發包,比如你要用到c呼叫python去執行一些任務,這個時候python.h就是你的好幫手。在我所理解一般用它都有兩個場景:

1. 借助語言優勢解決問題;

2. 簡化開發難度,偷懶;

在我這,我用它的主要目的在於加入掃瞄框架的依賴,畢竟lua的學習成本挺高的,如果正好這個安全人員不懂lua,只懂python咋整?能不成讓他學習lua麼?成本是乙個方面,更多的是怎麼快起來。乙個團隊,在快節奏下才能成長起來。

0x02 坑坑窪窪的過程

1.1 python.h錯誤異常

[root@cloud ~]# gcc b.c -i/usr/include/python2.7 -o ***

b.c:11:27: 錯誤:python/python.h:沒有那個檔案或目錄

b.c: 在函式『great_function_from_python』中:

b.c:43: 錯誤:『pyobject』未宣告(在此函式內第一次使用)

b.c:43: 錯誤:(即使在乙個函式內多次出現,每個未宣告的識別符號在其

b.c:43: 錯誤:所在的函式內也只報告一次。)

b.c:43: 錯誤:『pmodule』未宣告(在此函式內第一次使用)

b.c:43: 錯誤:『pfunc』未宣告(在此函式內第一次使用)

b.c:44: 錯誤:『pargs』未宣告(在此函式內第一次使用)

b.c:44: 錯誤:『pvalue』未宣告(在此函式內第一次使用)

預設的情況下,python.h應該在這個位置,但是測試的結果說找不到。內心是崩潰的,我在mac下是正常的。

1.2 版本問題

用find命令找當前系統中的python.h的版本,發現只有2.6的,但是我按照了python2.7,這個版本完全錯亂了。

[root@cloud ~]# find / -name python.h 2>/dev/null

/usr/include/python2.6/python.h

wget

tar xjf python-2.7.6.tar.xz

cd python-2.7.6

./configure --enable-shared --prefix=/usr/local/python2.7

make

make install

echo /usr/local/python2.7/lib > /etc/ld.so.conf.d/python2.7.conf

ldconfig

restorecon -rf /

0x03 解決方案

首先,你需要先把所有的python環境解除安裝,然後安裝同步的環境,比如python2.7.12,devel也是python2.7.12,還有就是libs也必須是,不然弄不了,另外,編譯安裝預設不靠譜,最好就是rpm的方式來。包我留下,有需要的玩。

這是我的解決方案,當前完美解決我的問題,另外,推薦大家按照這個方式來搞,特別在centos環境下,這個比較坑爹。

關於LayoutSubviews何時被呼叫

for this purpose,i will define a few view relationships i then ran the following tests.an x means the view was layed out from this i surmise the follo...

關於網路效能調優

這兩天閱讀 wireshark網路分析就這麼簡單 一書,作者在 patrick故事 一節中提到乙個問題分析的細節,於是決定記下 有一台檔案伺服器的讀效能只有10mb s,遠低於客戶的期望。我嘗試過很多調優方式,效能卻只降不公升。徒勞三天之後,我對自己徹底失去了信心。這時候我又想起了patrick,於...

機器學習 關於調參

關於引數 feature scaling 機器學習中對於引數的理解不是數學中的數字,而是代表的是一種邏輯的趨勢的數字,這種邏輯是人類對場景的邏輯,也可以看作是人思想上對場景與數字引數的經驗,所以機器學習中的運算,不是數字的運算,而是邏輯的運算,如何設計出符合人類邏輯規律的運算,才能更好的 趨勢,這種...