Python build CFFI in API mode with Setuptools












0















I'm trying to learn about creating a CFFI modules, and packaging them with setuptools. When I run the build script build_foo.py I get an API mode library, but when I try to pip install . I get an ABI mode library.



Creates API mode



$> python build_foo.py
$> ls
build_foo.py _one_cffi.cpython-36m-x86_64-linux-gnu.so
_one_cffi.c _one_cffi.o


Creates ABI mode



$> pip install .
$> ls env/bin/site-packages
cffi pkg_resources
cffi-1.11.5.dist-info pkg_resources-0.0.0.dist-info
_cffi_backend.cpython-36m-x86_64-linux-gnu.so __pycache__
easy_install.py pycparser
Foo-0.1.dist-info pycparser-2.19.dist-info
foopkg setuptools
_one_cffi.abi3.so setuptools-40.6.2.dist-info
pip wheel
pip-18.1.dist-info wheel-0.32.3.dist-info




Files



build_foo.py



#!/usr/bin/env python3

import cffi

ffi = cffi.FFI()
ffi.cdef("int get_one();")
ffi.set_source("_one_cffi",
"""
int get_one() {
return 1;
}

"""
)

if __name__ == '__main__':
ffi.compile(verbose=True)


setup.py



from setuptools import setup
setup(
name = 'Foo',
version = '0.1',
packages = ['foopkg'],
cffi_modules=["foopkg/build_foo.py:ffi"],
install_requires = ['cffi']
)









share|improve this question



























    0















    I'm trying to learn about creating a CFFI modules, and packaging them with setuptools. When I run the build script build_foo.py I get an API mode library, but when I try to pip install . I get an ABI mode library.



    Creates API mode



    $> python build_foo.py
    $> ls
    build_foo.py _one_cffi.cpython-36m-x86_64-linux-gnu.so
    _one_cffi.c _one_cffi.o


    Creates ABI mode



    $> pip install .
    $> ls env/bin/site-packages
    cffi pkg_resources
    cffi-1.11.5.dist-info pkg_resources-0.0.0.dist-info
    _cffi_backend.cpython-36m-x86_64-linux-gnu.so __pycache__
    easy_install.py pycparser
    Foo-0.1.dist-info pycparser-2.19.dist-info
    foopkg setuptools
    _one_cffi.abi3.so setuptools-40.6.2.dist-info
    pip wheel
    pip-18.1.dist-info wheel-0.32.3.dist-info




    Files



    build_foo.py



    #!/usr/bin/env python3

    import cffi

    ffi = cffi.FFI()
    ffi.cdef("int get_one();")
    ffi.set_source("_one_cffi",
    """
    int get_one() {
    return 1;
    }

    """
    )

    if __name__ == '__main__':
    ffi.compile(verbose=True)


    setup.py



    from setuptools import setup
    setup(
    name = 'Foo',
    version = '0.1',
    packages = ['foopkg'],
    cffi_modules=["foopkg/build_foo.py:ffi"],
    install_requires = ['cffi']
    )









    share|improve this question

























      0












      0








      0








      I'm trying to learn about creating a CFFI modules, and packaging them with setuptools. When I run the build script build_foo.py I get an API mode library, but when I try to pip install . I get an ABI mode library.



      Creates API mode



      $> python build_foo.py
      $> ls
      build_foo.py _one_cffi.cpython-36m-x86_64-linux-gnu.so
      _one_cffi.c _one_cffi.o


      Creates ABI mode



      $> pip install .
      $> ls env/bin/site-packages
      cffi pkg_resources
      cffi-1.11.5.dist-info pkg_resources-0.0.0.dist-info
      _cffi_backend.cpython-36m-x86_64-linux-gnu.so __pycache__
      easy_install.py pycparser
      Foo-0.1.dist-info pycparser-2.19.dist-info
      foopkg setuptools
      _one_cffi.abi3.so setuptools-40.6.2.dist-info
      pip wheel
      pip-18.1.dist-info wheel-0.32.3.dist-info




      Files



      build_foo.py



      #!/usr/bin/env python3

      import cffi

      ffi = cffi.FFI()
      ffi.cdef("int get_one();")
      ffi.set_source("_one_cffi",
      """
      int get_one() {
      return 1;
      }

      """
      )

      if __name__ == '__main__':
      ffi.compile(verbose=True)


      setup.py



      from setuptools import setup
      setup(
      name = 'Foo',
      version = '0.1',
      packages = ['foopkg'],
      cffi_modules=["foopkg/build_foo.py:ffi"],
      install_requires = ['cffi']
      )









      share|improve this question














      I'm trying to learn about creating a CFFI modules, and packaging them with setuptools. When I run the build script build_foo.py I get an API mode library, but when I try to pip install . I get an ABI mode library.



      Creates API mode



      $> python build_foo.py
      $> ls
      build_foo.py _one_cffi.cpython-36m-x86_64-linux-gnu.so
      _one_cffi.c _one_cffi.o


      Creates ABI mode



      $> pip install .
      $> ls env/bin/site-packages
      cffi pkg_resources
      cffi-1.11.5.dist-info pkg_resources-0.0.0.dist-info
      _cffi_backend.cpython-36m-x86_64-linux-gnu.so __pycache__
      easy_install.py pycparser
      Foo-0.1.dist-info pycparser-2.19.dist-info
      foopkg setuptools
      _one_cffi.abi3.so setuptools-40.6.2.dist-info
      pip wheel
      pip-18.1.dist-info wheel-0.32.3.dist-info




      Files



      build_foo.py



      #!/usr/bin/env python3

      import cffi

      ffi = cffi.FFI()
      ffi.cdef("int get_one();")
      ffi.set_source("_one_cffi",
      """
      int get_one() {
      return 1;
      }

      """
      )

      if __name__ == '__main__':
      ffi.compile(verbose=True)


      setup.py



      from setuptools import setup
      setup(
      name = 'Foo',
      version = '0.1',
      packages = ['foopkg'],
      cffi_modules=["foopkg/build_foo.py:ffi"],
      install_requires = ['cffi']
      )






      python python-3.x setuptools packaging python-cffi






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 25 '18 at 20:41









      chew sockschew socks

      617824




      617824
























          0






          active

          oldest

          votes











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53471742%2fpython-build-cffi-in-api-mode-with-setuptools%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          0






          active

          oldest

          votes








          0






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes
















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53471742%2fpython-build-cffi-in-api-mode-with-setuptools%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Create new schema in PostgreSQL using DBeaver

          Deepest pit of an array with Javascript: test on Codility

          Costa Masnaga