как исключить .файлы py и .pyc при сборке cythonized пакета conda?

#python #conda #cythonize

#python #conda #cythonize

Вопрос:

У меня есть setup.py скрипт (см. Ниже), который выполняет cytonization моего пакета python. У меня также есть meta.yaml (см. Ниже) для сборки пакета conda.

Как мне избежать того, чтобы файлы .py и .pyc были объединены внутри пакета conda ( .tar.bz2 )?

Я уже попробовал несколько предложений из связанных вопросов о переполнении стека:

  • добавление MANIFEST.in содержащего exclude *.py ,
  • замена packages=find_packages() в setup.py на packages=find_packages(exclude=['*.py.'])

Любые предложения приветствуются!

setup.py

 from setuptools import setup, find_packages
import os
import sys
from distutils.extension import Extension
import fnmatch
from Cython.Distutils import build_ext


def find_files(directory, pattern, exclude_dirs=None):
    """
    Recurse through a directory and find all files matching a pattern, excluding the directories from the list
    exclude_dirs.
    """
    exclude_dirs = exclude_dirs or []
    for root, dirs, files in os.walk(directory):
        for basename in files:
            if fnmatch.fnmatch(basename, pattern):
                if all(ex_dir not in root for ex_dir in exclude_dirs):
                    filename = os.path.join(root, basename)
                    # For module name, remove leading ./, replace / with . and omit .py extension
                    modname = filename.replace('/', '.')[2:-3]
                    yield (modname, filename)


def make_extension(extension_name, extension_path):
    """
    Generate an Extension object from its dotted name and path.
    """
    return Extension(extension_name, [extension_path], extra_compile_args=["-O3", "-Wall"], extra_link_args=['-g'])

# Build list of c extensions to be compiled, exclude detector ideas, test and legacy code
extension_paths = find_files('./my_package', '*.py')
extensions = [make_extension(extension_name, extension_path) for extension_name, extension_path in extension_paths]

setup(
    name="my-package",
    version="0.2.dev",
    packages=find_packages(),
    test_suite="tests",
    install_requires=[
        'cython',
        'numpy',
        'pyyaml',
        'matplotlib',
    ],
    ext_modules=extensions,
    cmdclass={'build_ext': build_ext}
)
  

meta.yaml

 package:
  name: my-package
  version: "0.2.dev"

source:
  path: .

build:
  number: {{ environ.get('BUILD_NUMBER', 0) }}
  script: python setup.py install --single-version-externally-managed --record=record.txt
  include_recipe: False
  preserve_egg_dir: True

requirements:
  build:
    - python
    - cython
  run:
    - python
    - numpy
    - pyyaml
    - matplotlib