【发布时间】: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