首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cythonize将.so文件安装到错误的位置

Cythonize将.so文件安装到错误的位置
EN

Stack Overflow用户
提问于 2022-01-26 06:42:36
回答 1查看 251关注 0票数 0

我想问一个关于如何用Cython、setuptools扩展等配置setup.py的问题。我正在尝试用Cython.Distutilsbuild_ext来计算一个子模块。但是问题不是Cython.Distutils的扩展模块(如果它存在的话),因为它没有加载。只有build_ext。所以我在列表中创建了一个setuptools.extension扩展,然后计算扩展对象的列表。列表中只有一个扩展,如下所示。

代码语言:javascript
复制
Extension("distance", ["kmerdb/distance.pyx"], include_dirs=[np.get_include()])

我尝试过不同的安装方法,从python setup.py installpip install -e .,到生成轮毂文件和安装车轮。我找不到有用的东西..。

好吧,所以我对这个过程知之甚少,这可能就是我被挂断的原因,但我已经搜索了整个网站,没有运气。就这么办了。

我正在运行下面的shell脚本来在本地安装我的包,它运行得很好。问题是安装没有将.so.py文件移动到我要导出的kmerdb模块中。有什么建议吗?谢谢

代码语言:javascript
复制
>python setup.py sdist bdist_wheel
>/bin/auditwheel repair --plat manylinux2014_x86_64 dist/kmerdb-*linux_x86_64.whl
>mv wheelhouse/* dist
>rm dist/*linux_x86_64.whl
>pip install dist/kmerdb-*-manylinux2014_x86_64.whl
>ls ~/.pyenv/versions/kdb/lib/python3.10/site-packages/kmerdb-0.6.5-py3.10-linux-x86_64.egg/
distance.cpython-310-x86_64-linux-gnu.so    distance.py    kmerdb    ...

同样,distance.cpython-310-x86_64-linux-gno.so文件没有移动到kmerdb模块中,这是我的Python,我正在尝试在本地安装这个包,并为.whl上传到PyPI进行配置。

代码语言:javascript
复制
Python 3.10.1 (main, Jan  1 2022, 21:28:19) [GCC 11.1.0] on linux
Cython==0.29.26

setup.py

代码语言:javascript
复制
    Extension("distance", ["kmerdb/distance.pyx"], include_dirs=[np.get_include()], define_macros=[("NPY_NO_DEPRECATED_API", "NPY_1_7_API_VERSION")],),
    setup(
        name=NAME,
        version=VERSION,
        description=DESCRIPTION,
        long_description=long_description,
        long_description_content_type='text/markdown',
        author=AUTHOR,
        author_email=EMAIL,
        python_requires=REQUIRES_PYTHON,
        url=URL,
        download_url=CURRENT_RELEASE,
        keywords = ["k-mer", "kmer", "k-merdb", "kmerdb", "kdb"],
        classifiers=[
            "Development Status :: 1 - Planning",
            "Intended Audience :: Developers",
            "Intended Audience :: Science/Research",
            "Operating System :: OS Independent",
            "Programming Language :: Python",
            "Programming Language :: Python :: 3",
            "Programming Language :: Python :: 3.6",
            "Programming Language :: Python :: 3.7",
            "Programming Language :: Python :: 3.8",
            "Programming Language :: Python :: 3.9",
            "Programming Language :: Python :: 3.10",
            "Topic :: Scientific/Engineering",
            "Topic :: Scientific/Engineering :: Bio-Informatics",
            "Topic :: Software Development :: Libraries :: Python Modules",
        ],
        packages=find_packages(exclude=["tests", "*.tests", "*.tests.*", "tests.*"]),
        package_dir={'kmerdb': 'kmerdb'},
        package_data={'kmerdb': ['CITATION']},
        # If your package is a single module, use this instead of 'packages':
        #py_modules=['kmerdb'],
        #scripts=['bin/kmerdb', 'bin/kmerdb_report.R'],
        entry_points={
            'console_scripts': ['kmerdb=kmerdb:cli'],
        },
        install_requires=REQUIRED,#['Cython==0.29.21', 'numpy==1.18.1'],
        extras_require=EXTRAS,
        include_package_data=True,
        license='GPLv3+',
        test_suite='test',
        #    tests_require=['mamba', 'expect'],
        ext_modules=cythonize(extensions),
        library_dirs=["."],
        zip_safe=False,
    )
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-27 19:26:28

我要自己回答这个问题。这个问题是由一个不恰当的扩展引起的。

代码语言:javascript
复制
    Extension("kmerdb.distance", ["kmerdb/distance.pyx"], include_dirs=[np.get_include()])

我所要做的就是包括完全指定的子模块层次结构的模块名。修好了!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70859444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档