2017-05-01 22 views
0

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

唯一想到的是我在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...> 

编辑: 今天我试着使用Python setup.py bdist_conda,但行为相同,或者是conda问题,或者是具体问题在我的配置。
如果是这种情况,我猜是setup.py ....

+1

我认为缺少的重要信息是你的目录结构和你的setup.py文件。 – DavidW

+0

我编辑了添加您所说的信息的帖子。感谢您的帮助 – jvaquero

+0

' - setuptools - h5py - cython'可能不需要_run_包 –

回答

0

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