0

我正在尝试创建一个 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....

4

1 回答 1

1

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

于 2017-05-09T13:42:45.610 回答