正在将.pyx编译为.so使用设置.py

2024-05-13 23:09:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含.pyx和它们的等效.cpp的模块。在

当我运行python setup.py develop时,只有.cpp文件被转换为.so。但是,由于只有.pyx文件才足够可读,因此我希望将它们转换为.so。这个模块很大,因此单独编译.pyx文件可能会非常繁忙。在

理想情况下,我希望python setup.py develop.pyx文件直接转换为.so。在

这是安装文件

#! /usr/bin/env python
#
# Copyright (C) 2012 Mathieu Blondel

import sys
import os

DISTNAME = 'lightning'
DESCRIPTION = "Large-scale sparse linear classification, " + \
              "regression and ranking in Python"
LONG_DESCRIPTION = open('README.rst').read()
MAINTAINER = 'Mathieu Blondel'
MAINTAINER_EMAIL = 'mathieu@mblondel.org'
URL = 'https://github.com/mblondel/lightning'
LICENSE = 'new BSD'
DOWNLOAD_URL = 'https://github.com/mblondel/lightning'
VERSION = '0.1-git'

import setuptools  # we are using a setuptools namespace
from numpy.distutils.core import setup


def configuration(parent_package='', top_path=None):
    if os.path.exists('MANIFEST'):
        os.remove('MANIFEST')

    from numpy.distutils.misc_util import Configuration
    config = Configuration(None, parent_package, top_path)

    config.add_subpackage('lightning')

    return config

if __name__ == "__main__":

    old_path = os.getcwd()
    local_path = os.path.dirname(os.path.abspath(sys.argv[0]))

    os.chdir(local_path)
    sys.path.insert(0, local_path)

    setup(configuration=configuration,
          name=DISTNAME,
          maintainer=MAINTAINER,
          include_package_data=True,
          scripts=["bin/lightning_train",
                   "bin/lightning_predict"],
          maintainer_email=MAINTAINER_EMAIL,
          description=DESCRIPTION,
          license=LICENSE,
          url=URL,
          version=VERSION,
          download_url=DOWNLOAD_URL,
          long_description=LONG_DESCRIPTION,
          zip_safe=False, # the package can run out of an .egg file
          classifiers=[
              'Intended Audience :: Science/Research',
              'Intended Audience :: Developers',
              'License :: OSI Approved',
              'Programming Language :: C',
              'Programming Language :: Python',
              'Topic :: Software Development',
              'Topic :: Scientific/Engineering',
              'Operating System :: Microsoft :: Windows',
              'Operating System :: POSIX',
              'Operating System :: Unix',
              'Operating System :: MacOS'
             ]
    )

这是Make文件

^{pr2}$

在编译过程中,我得到了这个输出

compile options: '-I/home/is/anaconda/lib/python2.7/site-packages/numpy/core/include -I/home/is/lightning/lightning/impl/randomkit -I/home/is/anaconda/lib/python2.7/site-packages/numpy/core/include -I/home/is/anaconda/include/python2.7 -c'
c++: svrg_fast.cpp

我宁愿让安装程序编译.c代码,因为我可以轻松地将.pyx转换为{}。或者可以将Pyx转换成C++?在

提前谢谢!在


Tags: 文件pathimportnumpyurlpackageincludeos
1条回答
网友
1楼 · 发布于 2024-05-13 23:09:59

只是找到了一个办法。在

假设我正在对file.pyx进行更改,我可以通过运行将其编译为.cpp

cython cplus file.pyx

然后,我只需运行

sudo python setup.py develop

希望这有帮助!在

相关问题 更多 >