【问题标题】:Install mixture of extension module. pure python module and shared libraries with distutils安装扩展模块的混合物。纯 python 模块和使用 distutils 的共享库
【发布时间】:2011-08-04 17:34:55
【问题描述】:

我正在使用 cython 构建扩展模块。该模块依赖于一个外部共享库,该库是在构建模块时找到的。此外,我在同一目录中有一些纯 Python 模块。

谁能给我这个任务的 setup.py 示例?调用“python setup.py install”时,在同一目录中获取扩展模块、纯python模块和共享库时遇到问题。

【问题讨论】:

  • 您是使用 Py2EXE 进行部署,还是只是尝试使用 python setup.py bdist_wininst 为您的软件包制作二进制安装程序?
  • 我刚刚尝试了一个本地“python setup.py install”来将我的东西放到.../site-packages/

标签: python distutils cython


【解决方案1】:

我找到了解决方案:我有一个包目录 ABC 之类的

ABC/
    __init__.py
    A.py
    B.pyx
    C.so             (or C.dll and C.lib on win)

那么下面的 setup.py 就可以完成这项工作:

#input-encoding: utf-8
from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext

setup(
  name = "ABC",
  packages = ["ABC"],
  package_dir = { "ABC" : "." },
  ext_package = "ABC",
  cmdclass = {'build_ext': build_ext},
  package_data = { ".": [ "C.dll"] },
  ext_modules = [ Extension("B", sources="B.pyx", libraries="C" ) ]
)

我必须将 setup.py 放入 ABC/ 并通过 package_dir = { "ABC" : "." }, 重定向

【讨论】:

  • > 我不得不将 setup.py 放在 ABC 中,这听起来很奇怪。您是否尝试过使用 package_data = {'ABC': ['abc/C.dll']} 代替?
  • 试过了,但没用。最后我设置了一个常规的目录结构,包比我的 setup.py 低一级。
猜你喜欢
  • 2010-09-23
  • 1970-01-01
  • 2018-11-28
  • 2010-12-28
  • 2013-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-16
相关资源
最近更新 更多