【问题标题】:How do I create a Python pypi package with a C library?如何使用 C 库创建 Python pypi 包?
【发布时间】:2012-04-19 17:43:22
【问题描述】:

我想将IP2Location Python library 放在我正在运行的本地 Pypi / Cheeseshop 服务器上,以便我可以使用 buildout 将其自动包含在项目中。

首先,我按照 IP2Location 的(简洁)文档中解释的方式安装库来测试库:1) 下载 IP2Location C library 并编译它 2) 在 IP2Location Python 库中运行 python setup.py build && python setup.py install

我得到了它的工作,所以我尝试通过运行将 Python 库上传到我的本地 pypi 服务器:

python setup.py register -r local sdist upload -r local

它上传了一个包到我的本地 pypi 服务器,但包只包含库的 Python 部分,而不是 C 部分。我希望 C 库也包含在内,然后在像 buildout 这样的工具从我的本地 pypi 服务器下载它时自动编译。

我对 pypi 很陌生。我想要做的甚至可能吗?如果有,怎么做?

谢谢, 斯科特

【问题讨论】:

    标签: python setuptools distutils buildout pypi


    【解决方案1】:

    不幸的是,没有,至少不是 setup.py 在 python 库中的结构方式。 不过,您可能会通过尝试以下方法获得可重复性(请注意,我没有尝试过,IP2Location 是一个专有库):

    通过zc.recipe.cmmi 在您的构建中构建C 库。类似于以下的部分应该可以完成这项工作。

    [iplocationc]
    recipe = zc.recipe.cmmi
    url = http://www.ip2location.com/downloads/ip2location-c-4.0.2.tar.gz
    

    然后,使用 zc.recipe.egg 将 python 对应项安装为鸡蛋:

    [iplocation]
    recipe = zc.recipe.egg:custom
    eggs = iplocation
    include-dirs = ${buildout:directory}/parts/iplocationc/includes_dir_goes_here
    rpath = ${buildout:directory}/parts/iplocationc/libs_dir_location_goes_here
    

    您可能需要稍微修改一下配方参数,并且可能会摆弄 setup.py,但希望这应该可以做到。

    【讨论】:

      猜你喜欢
      • 2015-07-27
      • 1970-01-01
      • 1970-01-01
      • 2015-10-01
      • 2021-08-14
      • 2020-05-05
      • 2021-08-18
      • 2021-11-30
      • 1970-01-01
      相关资源
      最近更新 更多