<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 構建 Cython 代碼 > 原文: [http://docs.cython.org/en/latest/src/quickstart/build.html](http://docs.cython.org/en/latest/src/quickstart/build.html) 與 Python 不同,Cython 代碼必須編譯。這發生在兩個階段: > * `.pyx`文件由 Cython 編譯為`.c`文件,它含有 Python 擴展模塊的代碼。 > * `.c`文件由 C 編譯器編譯為`.so`文件(或 Windows 上的`.pyd`),可直接被`import`引入到 一個Python會話中. Distutils 或 setuptools 負責這部分。雖然 Cython 可以在某些情況下為你調用它們。 要完全理解 Cython + distutils / setuptools 構建過程,可能需要閱讀更多關于[分發 Python 模塊](https://docs.python.org/3/distributing/index.html)的內容。 有幾種方法可以構建 Cython 代碼: > * 寫一個 distutils / setuptools `setup.py`。這是正常和推薦的方式。 > * 使用 [Pyximport](../userguide/source_files_and_compilation.html#pyximport),導入 Cython `.pyx`文件就像它們是`.py`文件一樣(使用 distutils 在后臺編譯和構建)。這種方法比編寫`setup.py`更容易,但不是很靈活。因此,如果您需要某些編譯選項,則需要編寫`setup.py`。 > * 手動運行`cython`命令行工具程序來將`.pyx`文件編譯生成`.c`文件,然后手動將`.c`文件編譯成適合從 Python 導入的共享庫或 DLL。(這些手動步驟主要用于調試和實驗。) > * 使用 [[Jupyter]](#jupyter) 筆記本或 [[Sage]](install.html#sage) 筆記本,兩者都允許 Cython 代碼內聯。這是開始編寫 Cython 代碼并運行它的最簡單方法。 目前,使用 distutils 或 setuptools 是構建和分發 Cython 文件的最常用方式。其他方法在參考手冊的 [源文件和編譯](../userguide/source_files_and_compilation.html#compilation) 部分中有更詳細的描述。 ## 使用 distutils 構建 一個Cython 模塊 想象一下文件`hello.pyx`中的一個簡單的“hello world”腳本: ```py def say_hello_to(name): print("Hello %s!" % name) ``` 以下是相應的`setup.py`腳本: ```py from distutils.core import setup from Cython.Build import cythonize setup(name='Hello world app', ext_modules=cythonize("hello.pyx")) ``` 要構建,請運行`python setup.py build_ext --inplace`。然后只需啟動一個 Python 會話并執行`from hello import say_hello_to`并根據需要使用導入的函數。 如果您使用 setuptools 而不是 distutils,則需要注意,運行`python setup.py install`時的默認操作是創建一個壓縮的`egg`文件,當您嘗試從依賴包中使用它們時,這些文件無法與`pxd`文件一起用于`pxd`文件。為防止這種情況,請在`setup()`的參數中包含`zip_safe=False`。 ## 使用Jupyter筆記本來構建 Cython 可以通過 Web 瀏覽器通過 Jupyter 筆記本方便地和交互式地使用。要安裝 Jupyter 筆記本,例如進入 virtualenv,使用 pip: ```py (venv)$ pip install jupyter (venv)$ jupyter notebook ``` 要啟用對 Cython 編譯的支持,請按照 [安裝指南](install.html#install) 中的說明安裝 Cython,并從 Jupyter 筆記本中加載`Cython`擴展: ```py %load_ext Cython ``` 然后,使用`%%cython`標記為單元格添加前綴以進行編譯: ```py %%cython cdef int a = 0 for i in range(10): a += i print(a) ``` 您可以通過傳遞`--annotate`選項來顯示 Cython 的代碼分析: ```py %%cython --annotate ... ``` ![../../_img/jupyter.png](https://img.kancloud.cn/f3/da/f3daa969ee8336d101b4bc4b9a05ac54_773x933.jpg) 有關`%%cython`魔法參數的更多信息,請參閱 [使用 Jupyter 筆記本](../userguide/source_files_and_compilation.html#compiling-notebook) 進行編譯。 ## 使用 Sage 筆記本 ![../../_img/sage.png](https://img.kancloud.cn/bd/71/bd716e541c4f08ccaed314354f4dea31_989x781.jpg) 對于 Sage 數學發行版的用戶,Sage 筆記本允許通過在單元格頂部鍵入`%cython`并進行評估來透明地編輯和編譯 Cython 代碼。導入到運行會話中的 Cython 單元格中定義的變量和函數。 > [[Jupyter]](#id1) [https://jupyter.org/](https://jupyter.org/)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看