Mac Mojave and Python 3.8 working branch
維護者通常 5 天內回覆
還沒有人認領這個 Issue。
評估
- 難度
- 4/5
- 預估耗時
- 3-5 天
- 新手友好度
- 28/100
- Issue 類型
- 功能
- 描述清晰度
- 需要釐清
- 活躍度
- 停滯
- 領域
- build-system, devtools
研究方向
從 task.py 和已記錄的 invoke all 工作流程開始,接著檢視 C、C++、CFFI、PyBind11 和 Cython 模組的建置與測試方式。重現所回報的 Python 3.8 和 Mac Mojave 環境;當要求的分支或已記錄的變更完成整合,且列出的所有模組建置和測試均通過後,即視為完成。
由索引模型根據 Issue 內容生成。
描述
Hi, I have a branch to push to you with a working version of the python binding module
with Mac Mojave and Python 3.8 using python.org version of python, (not brew)
Cheers Dave.
Notes here;
help on python c binding
dependencies
install python3.8 from python.org
pip3 install pybind11
pip3 install invoke
pip3 install Cython
security block
mac mojave blocks relative pathed libraries, here is the fix
def install_name_tool(dependent=None, depends=[]):
'''
make the lib full path to get around security blocking relative paths
'''
for dependson in depends:
full_path = os.path.abspath(dependson)
shell_str='install_name_tool -change {0} {1} {2}'.format(dependson, full_path, dependent)
print(' install_name_tool: {0}'.format(dependson))
invoke.run(shell_str)
mac G++ missing symbols
mac compile gets upset about missing symbols
ignore missing symbols on a mac
On Mac OS: the build command is almost the same but it also requires passing the -undefined dynamic_lookup flag so as to ignore missing symbols when building the module:
in task.py
def compile_python_module(cpp_name, extension_name):
invoke.run(
"g++ -O3 -Wall -Werror -shared -std=c++11 -fPIC "
"`python3.8-config --includes` "
"`python3 -m pybind11 --includes` "
"-undefined dynamic_lookup "
"-I . "
"{0} "
"-o {1}`python3.8-config --extension-suffix` "
"-L. -lcppmult -Wl,-rpath,.".format(cpp_name, extension_name)
)
compile and test
here is the output from a good compile and test run
$ invoke all
==================================================
= Building C Library
* Complete
==================================================
= Testing ctypes Module
In cmult : int: 6 float 2.3 returning 13.8
In Python: int: 6 float 2.3 return val 48.0
In cmult : int: 6 float 2.3 returning 13.8
In Python: int: 6 float 2.3 return val 13.8
==================================================
= Building CFFI Module
install_name_tool: libcmult.so
* Complete
==================================================
= Testing CFFI Module
In cmult : int: 6 float 2.3 returning 13.8
In Python: int: 6 float 2.3 return val 13.8
==================================================
= Building C++ Library
install_name_tool: libcmult.so
install_name_tool: cffi_example.cpython-38-darwin.so
* Complete
==================================================
= Building PyBind11 Module
install_name_tool: libcmult.so
install_name_tool: cffi_example.cpython-38-darwin.so
install_name_tool: libcppmult.so
* Complete
==================================================
= Testing PyBind11 Module
In cppmul: int: 6 float 2.3 returning 13.8
In Python: int: 6 float 2.3 return val 13.8
==================================================
= Building Cython Module
install_name_tool: libcmult.so
install_name_tool: cffi_example.cpython-38-darwin.so
install_name_tool: libcppmult.so
* Complete
==================================================
= Testing Cython Module
In cppmul: int: 6 float 2.3 returning 13.8
In Python: int: 6 float 2.3 return val 13.8
- 主要語言
- Jupyter Notebook
- 星號
- 5.2k
- 分支
- 5.3k
- 平均合併
- 5 天 2 小時
- 30 天內合併 PR
- 11
環境準備
- 沒有 Dockerfile 或 Docker Compose 檔案
- 有 Pull Request 範本
- 沒有貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
realpython/materials 的其他 Issue
-
難度 2/5 1-3 小時 新手友好度 68/100
realpython/materials#729 ·
維護者通常 5 天內回覆
-
п未關閉
難度 5/5 一週以上 新手友好度 1/100
realpython/materials#763 ·
維護者通常 5 天內回覆
-
難度 1/5 1 小時以內 新手友好度 55/100
realpython/materials#738 ·
維護者通常 5 天內回覆
-
難度 1/5 1 小時以內 新手友好度 45/100
realpython/materials#737 ·
維護者通常 5 天內回覆
-
проект2未關閉
難度 5/5 一週以上 新手友好度 15/100
realpython/materials#725 ·
維護者通常 5 天內回覆
查看 realpython/materials 的全部 Issue
相似的 Issue
-
qt6base报错未關閉
難度 2/5 1-3 小時 新手友好度 66/100
coolsnowwolf/lede#14208 ·
-
難度 2/5 1-3 小時 新手友好度 82/100
維護者通常 4 天內回覆
-
sev:L
難度 1/5 1 小時以內 新手友好度 72/100
Systemorph/MeshWeaver#6233 ·
維護者通常 1 天內回覆
-
難度 2/5 1-3 小時 新手友好度 83/100
維護者通常 1 天內回覆
-
4Q-maintenance
難度 2/5 1-3 小時 新手友好度 78/100
OpenLiberty/liberty-tools-intellij#1790 ·
維護者通常 2 天內回覆