spaCy/setup.py

98 lines
3.7 KiB
Python
Raw Normal View History

2014-07-05 18:49:34 +00:00
#!/usr/bin/env python
import sys
import os
from os import path
from glob import glob
2015-01-03 10:02:10 +00:00
import subprocess
import numpy
2014-07-05 18:49:34 +00:00
2015-01-03 10:02:10 +00:00
from setuptools import setup
from distutils.core import Extension
import shutil
2014-07-05 18:49:34 +00:00
def clean(ext):
2015-01-03 10:02:10 +00:00
for src in ext.sources:
if src.endswith('.c') or src.endswith('cpp'):
so = src.rsplit('.', 1)[0] + '.so'
html = src.rsplit('.', 1)[0] + '.html'
2014-07-05 18:49:34 +00:00
if os.path.exists(so):
os.unlink(so)
if os.path.exists(html):
os.unlink(html)
HERE = os.path.dirname(__file__)
virtual_env = os.environ.get('VIRTUAL_ENV', '')
compile_args = []
link_args = []
libs = []
includes = ['.', numpy.get_include()]
cython_includes = ['.']
2014-07-05 18:49:34 +00:00
if 'VIRTUAL_ENV' in os.environ:
includes += glob(path.join(os.environ['VIRTUAL_ENV'], 'include', 'site', '*'))
else:
# If you're not using virtualenv, set your include dir here.
pass
ext_args = {'language': "c++", "include_dirs": includes}
2014-07-05 18:49:34 +00:00
exts = [
2015-01-03 10:02:10 +00:00
Extension("spacy.typedefs", ["spacy/typedefs.cpp"], **ext_args),
Extension("spacy.strings", ["spacy/strings.cpp"], **ext_args),
Extension("spacy.lexeme", ["spacy/lexeme.cpp"], **ext_args),
Extension("spacy.vocab", ["spacy/vocab.cpp"], **ext_args),
Extension("spacy.tokens", ["spacy/tokens.cpp"], **ext_args),
Extension("spacy.morphology", ["spacy/morphology.cpp"], **ext_args),
Extension("spacy._ml", ["spacy/_ml.cpp"], **ext_args),
Extension("spacy.tokenizer", ["spacy/tokenizer.cpp"], **ext_args),
Extension("spacy.en.attrs", ["spacy/en/attrs.cpp"], **ext_args),
Extension("spacy.en.pos", ["spacy/en/pos.cpp"], **ext_args),
Extension("spacy.syntax.parser", ["spacy/syntax/parser.cpp"], **ext_args),
Extension("spacy.syntax._state", ["spacy/syntax/_state.cpp"], **ext_args),
Extension("spacy.syntax.arc_eager", ["spacy/syntax/arc_eager.cpp"], **ext_args),
Extension("spacy.syntax._parse_features", ["spacy/syntax/_parse_features.cpp"],
2014-12-23 04:18:20 +00:00
**ext_args)
2014-12-17 10:10:12 +00:00
#Extension("spacy.pos_feats", ["spacy/pos_feats.pyx"], language="c++", include_dirs=includes),
#Extension("spacy.ner._state", ["spacy/ner/_state.pyx"], language="c++", include_dirs=includes),
#Extension("spacy.ner.bilou_moves", ["spacy/ner/bilou_moves.pyx"], language="c++", include_dirs=includes),
#Extension("spacy.ner.io_moves", ["spacy/ner/io_moves.pyx"], language="c++", include_dirs=includes),
#Extension("spacy.ner.greedy_parser", ["spacy/ner/greedy_parser.pyx"], language="c++", include_dirs=includes),
#Extension("spacy.ner.pystate", ["spacy/ner/pystate.pyx"], language="c++", include_dirs=includes),
#Extension("spacy.ner.context", ["spacy/ner/context.pyx"], language="c++", include_dirs=includes),
#Extension("spacy.ner.feats", ["spacy/ner/feats.pyx"], language="c++", include_dirs=includes),
#Extension("spacy.ner.annot", ["spacy/ner/annot.pyx"], language="c++", include_dirs=includes),
2014-07-05 18:49:34 +00:00
]
if sys.argv[1] == 'clean':
print >> sys.stderr, "cleaning .c, .c++ and .so files matching sources"
map(clean, exts)
2015-01-03 10:02:10 +00:00
setup(
2014-10-21 23:17:26 +00:00
name='spacy',
2015-01-02 10:56:43 +00:00
packages=['spacy', 'spacy.en', 'spacy.syntax'],
description="Industrial-strength NLP",
2014-07-05 18:49:34 +00:00
author='Matthew Honnibal',
author_email='honnibal@gmail.com',
2015-01-02 14:59:43 +00:00
version='0.1',
2015-01-02 10:56:43 +00:00
url="http://honnibal.github.io/spaCy/",
2015-01-03 10:02:10 +00:00
package_data={"spacy": ["*.pxd"],
"spacy.en": ["*.pxd", "data/pos/*",
"data/wordnet/*", "data/tokenizer/*",
"data/vocab/*"],
2015-01-02 10:56:43 +00:00
"spacy.syntax": ["*.pxd"]},
2014-07-05 18:49:34 +00:00
ext_modules=exts,
2015-01-03 10:02:10 +00:00
license="Dual: Commercial or AGPL",
install_requires=['murmurhash', 'cymem', 'preshed', 'thinc', "unidecode",
"ujson"]
2014-07-05 18:49:34 +00:00
)