【发布时间】:2020-12-05 01:29:34
【问题描述】:
我有一个 python3 发行版,它有一个包和一个 C 扩展。我希望能够在 tell.py 脚本中的导入期间指定 C 扩展的版本,但似乎无法弄清楚。
我的目录结构如下:
funnyjoke/
├── tell.py
├── funnyjoke
└── __init__.py
└── src
└── fastjoke.c
我可以完美导入funnyjoke模块的特定版本:
__requires__= 'funnyjoke==0.3'
import pkg_resources
pkg_resources.require("funnyjoke==0.3")
import funnyjoke
funnyjoke.tell()
但是 fastjoke 扩展没有从setup.py 脚本中获取版本
__requires__= 'fastjoke==0.3'
import pkg_resources
pkg_resources.require("fastjoke==0.3")
import fastjoke
fastjoke.tell()
并给出错误:
pkg_resources.DistributionNotFound: The 'fastjoke==0.3' distribution was not found and is required by the application
是否可以为 C 扩展设置/附加一个版本?
setup.py
from setuptools import setup, Extension, find_packages
setup(name='funnyjoke',
version='0.3',
description='The funniest joke in the world',
author='Flying Circus',
license='MIT',
#packages=['funnyjoke'],
packages=find_packages(),
scripts=['tell.py'],
ext_modules = [Extension('fastjoke', ['src/fastjoke.c'])],
zip_safe=False)
所有文件也可以通过pip3 install funnyjoke检索
【问题讨论】:
-
嗨,不确定,也许将其附加到共享库前缀?
-
我有同样的想法,并尝试了各种尝试/黑客向共享库添加版本。有各种各样的陷阱,比如
distutils将句点视为folder separators,它也不喜欢下划线或破折号。我什至尝试安装后重命名共享库,但它只会带来更多的错误。
标签: python cpython python-extensions