Conda构建和cython问题

时间:2017-05-01 17:29:51

标签: python anaconda cython conda

我正在尝试创建一个conda包来分发python工具。该工具的一部分是cythonized,它使用python setup.py install完美运行。 我正确地创建了tar,但是当我尝试安装它时,该包不包含链接python导入和.so文件的.py文件。 因此,当我尝试导入该包时,我得到一个未找到的模块。

我发现围绕cython和conda的唯一想法是在meta.yaml的构建/运行部分引入cython需求,但我不知道为什么不包括那些.py文件。

这是我的meta.yaml

package:
  name: project
  version: 1.0.0
source:
  path: /home/user/project
requirements:
  build:
    - python >=2.7
    - jinja2
    - numpy
    - scipy
    - matplotlib
    - pysam
    - setuptools
    - h5py
    - cython
  run:
    - python >=2.7
    - jinja2
    - numpy
    - scipy
    - matplotlib
    - pysam >=0.8 
    - setuptools
    - h5py
    - cython
build:
  preserve_egg_dir: True
  entry_points:
    - exec_file = project.run_exec:main
about:
  license: GPL3
  summary: "PROJECT"

我的setup.py文件看起来像

from setuptools import setup, find_packages
from distutils.core import Extension
from Cython.Build import cythonize


extensions = [Extension('project.src.norm', ['project/src/norm.pyx'])]

setup(
    name="PROJECT",
    packages=find_packages(),
    version="1.0.0",
    description="PROJECT",
    author='Lab',
    author_email='email',
    url='http://',
    license='LICENSE.txt',
    include_package_data=True,
    entry_points={'console_scripts': ['exec_file = project.run_exec:main']},
    zip_safe=False,
    ext_modules=cythonize(extensions),
    classifiers=[
        'Development Status :: 4 - Beta',
        'Environment :: Console',
        'Intended Audience :: Bioinformaticians',
        'License :: OSI Approved :: BSD License',
        'Operating System :: MacOS',
        'Operating System :: Microsoft :: Windows',
        'Operating System :: POSIX',
        'Programming Language :: Python :: 2.7',
    ]
)

目录结构是

project/
    setup.py
    __init__.py
    MANIFEST.in
    requirements.txt
    README.md
    info/
        meta.yaml
        build.sh
        bld.bat
    project/
        src/
           norm.pyx
        run_exec.py
    subproject/
        <etc...>

EDITED: 今天我尝试使用python setup.py bdist_conda,但行为是相同的,或者是conda问题,或者是我配置中的特定问题。
如果是这种情况,我猜是setup.py ....

1 个答案:

答案 0 :(得分:1)

我确实发现问题出在我的环境中。我已经定义了一个PYTHONPATH变量,它使得conda生成错误的包。它不是直接进入构建包,而是直接导入我的源代码。删除PYTHONPATH问题就解决了。