【问题标题】:Conda build and cython problemsConda 构建和 cython 问题
【发布时间】:2017-09-29 03:03:52
【问题描述】:

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

我在 cython 和 conda 中发现的唯一想法是在 meta.yaml 的 build/run 部分中引入 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...>

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

【问题讨论】:

  • 我认为缺少的重要信息是你的目录结构和你的 setup.py 文件。
  • 我编辑了帖子添加了你说的信息。感谢您的帮助
  • - setuptools - h5py - cython 可能不需要运行
  • h5py 是必需的,在代码中导入。我不确定在运行部分或仅在构建中是否需要 setuptools 或 cython,但我认为这不是导致 conda 失败的原因
  • 具体没有包括哪些内容?我以为它是 run_exec.py,这是您特别提到的唯一 .py 文件,但根据您的反馈,这似乎并非如此。

标签: python conda cython conda-build


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多