.pyx와 그와 동등한 .cpp를 포함하는 모듈이 있습니다.setup.py를 사용하여 .pyx를 .so로 컴파일
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 = '[email protected]'
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'
]
)
그리고 이것은 만들기 파일입니다
PYTHON ?= python
CYTHON ?= cython
NOSETESTS ?= nosetests
DATADIR=$(HOME)/lightning_data
# Compilation...
CYTHONSRC= $(wildcard lightning/impl/*.pyx lightning/impl/randomkit/*.pyx)
CSRC= $(CYTHONSRC:.pyx=.cpp)
inplace:
$(PYTHON) setup.py build_ext -i
all: cython inplace
cython: $(CSRC)
clean:
rm -f lightning/impl/*.c lightning/impl/*.html
rm -f `find lightning -name "*.pyc"`
rm -f `find lightning -name "*.so"`
%.cpp: %.pyx
$(CYTHON) --cplus $<
# Tests...
#
test-code: in
$(NOSETESTS) -s lightning
test-coverage:
$(NOSETESTS) -s --with-coverage --cover-html --cover-html-dir=coverage \
--cover-package=lightning lightning
test: test-code test-doc
# Datasets...
#
datadir:
mkdir -p $(DATADIR)
# regression
download-abalone: datadir
./download.sh http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/regression/abalone_scale
mv abalone_scale $(DATADIR)
download-cadata: datadir
./download.sh http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/regression/cadata
mv cadata $(DATADIR)
download-cpusmall: datadir
./download.sh http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/regression/cpusmall_scale
mv cpusmall_scale $(DATADIR)
download-space_ga: datadir
./download.sh http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/regression/space_ga_scale
mv space_ga_scale $(DATADIR)
download-YearPredictionMSD: datadir
./download.sh http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/regression/YearPredictionMSD.bz2
bunzip2 YearPredictionMSD.bz2
mv YearPredictionMSD $(DATADIR)
./download.sh http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/regression/YearPredictionMSD.t.bz2
bunzip2 YearPredictionMSD.t.bz2
mv YearPredictionMSD.t $(DATADIR)
# binary classification
download-adult: datadir
./download.sh http://leon.bottou.org/_media/papers/lasvm-adult.tar.bz2
tar xvfj lasvm-adult.tar.bz2
mv adult $(DATADIR)
rm lasvm-adult.tar.bz2
download-banana: datadir
./download.sh http://leon.bottou.org/_media/papers/lasvm-banana.tar.bz2
tar xvfj lasvm-banana.tar.bz2
mv banana $(DATADIR)
rm lasvm-banana.tar.bz2
download-covtype: datadir
./download.sh http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/binary/covtype.libsvm.binary.scale.bz2
bunzip2 covtype.libsvm.binary.scale.bz2
mv covtype.libsvm.binary.scale $(DATADIR)
download-ijcnn: datadir
./download.sh http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/binary/ijcnn1.tr.bz2
./download.sh http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/binary/ijcnn1.t.bz2
bunzip2 ijcnn1.tr.bz2
bunzip2 ijcnn1.t.bz2
mv ijcnn1* $(DATADIR)
download-real-sim: datadir
./download.sh http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/binary/real-sim.bz2
bunzip2 real-sim.bz2
mv real-sim $(DATADIR)/realsim
download-reuters: datadir
./download.sh http://leon.bottou.org/_media/papers/lasvm-reuters.tar.bz2
tar xvfj lasvm-reuters.tar.bz2
mv reuters $(DATADIR)
rm lasvm-reuters.tar.bz2
download-url: datadir
./download.sh http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/binary/url_combined.bz2
bunzip2 url_combined.bz2
mv url_combined $(DATADIR)
download-waveform: datadir
./download.sh http://leon.bottou.org/_media/papers/lasvm-waveform.tar.bz2
tar xvfj lasvm-waveform.tar.bz2
mv waveform $(DATADIR)
rm lasvm-waveform.tar.bz2
download-webspam: datadir
./download.sh http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/binary/webspam_wc_normalized_unigram.svm.bz2
bunzip2 webspam_wc_normalized_unigram.svm.bz2
mv webspam_wc_normalized_unigram.svm $(DATADIR)/webspam
# multi-class
download-dna: datadir
./download.sh http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass/dna.scale.tr
./download.sh http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass/dna.scale.t
mv dna* $(DATADIR)
download-letter: datadir
./download.sh http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass/letter.scale.tr
./download.sh http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass/letter.scale.t
mv letter* $(DATADIR)
download-mnist: datadir
./download.sh http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass/mnist.scale.bz2
bunzip2 mnist.scale.bz2
mv mnist.scale $(DATADIR)
./download.sh http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass/mnist.scale.t.bz2
bunzip2 mnist.scale.t.bz2
mv mnist.scale.t $(DATADIR)
download-news20: datadir
./download.sh http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass/news20.scale.bz2
bunzip2 news20.scale.bz2
mv news20.scale $(DATADIR)
./download.sh http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass/news20.t.scale.bz2
bunzip2 news20.t.scale.bz2
mv news20.t.scale $(DATADIR)
download-pendigits: datadir
./download.sh http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass/pendigits
./download.sh http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass/pendigits.t
mv pendigits* $(DATADIR)
download-protein: datadir
./download.sh http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass/protein.tr.bz2
./download.sh http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass/protein.t.bz2
bunzip2 protein.tr.bz2
bunzip2 protein.t.bz2
mv protein* $(DATADIR)
download-rcv1: datadir
./download.sh http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass/rcv1_train.multiclass.bz2
bunzip2 rcv1_train.multiclass.bz2
./download.sh http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass/rcv1_test.multiclass.bz2
bunzip2 rcv1_test.multiclass.bz2
mv rcv1* $(DATADIR)
download-satimage: datadir
./download.sh http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass/satimage.scale.tr
./download.sh http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass/satimage.scale.t
mv satimage* $(DATADIR)
download-sector: datadir
./download.sh http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass/sector/sector.scale.bz2
bunzip2 sector.scale.bz2
./download.sh http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass/sector/sector.t.scale.bz2
bunzip2 sector.t.scale.bz2
mv sector* $(DATADIR)
download-usps: datadir
./download.sh http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass/usps.bz2
bunzip2 usps.bz2
mv usps $(DATADIR)
./download.sh http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass/usps.t.bz2
bunzip2 usps.t.bz2
mv usps.t $(DATADIR)
그리고 컴파일하는 동안, 나는이 출력을 얻을
,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
차라리 것 .pyx
을로 쉽게 변환 할 수 있으므로 설치시 .c
코드를 컴파일해야합니다.. 또는 .pyx를 C++로 변환 할 수 있습니까?
미리 감사드립니다.
'setup.py'는 어떻게 생겼습니까? [this] (http://docs.cython.org/src/quickstart/build.html)을 읽으셨습니까? – grc
질문이 업데이트되었습니다. :) – Curious
나는이 물건에 대한 전문가가 아니지만'ext_modules = cythonize ("*. pyx")'를'setup()'에 추가하면 어떻게 될까? 그리고'Cython.Build import cythonize'에서. – grc