在构建时导入egg功能

2024-05-12 18:52:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我维护的包中的setup.py文件使用另一个包中的代码来生成扩展:

from setuptools import setup, find_packages
from mydependence import build_ext
...
setup(
    name='mypackage',
    version='1.0.0',
    ...
    setup_requires = [
      'mydependence', # is this being checked properly?
    ],
    ...
    install_requires = [
      'mydependence',
    ],
    ...
    )

我想用zc.buildout构建当前包,因此我创建了一个简单的buildout.cfg文件,如下所示:

^{pr2}$

不幸的是,这并不像我预期的那样工作-当我执行./bin/buildout并且读取{}时,它会抱怨找不到{}。当buildout运行my setup.py时,它的sys.path不知道安装在eggs目录下的包(除了setuptools本身!)。显然,“eggs”和“development eggs”中的包在运行包的./bin/buildout的路径中并不包括。在

问题是:如何实现这一目标?在


Tags: 文件代码frompyimportbuildbinpackages
1条回答
网友
1楼 · 发布于 2024-05-12 18:52:46

基本问题是,在调用setup()方法之前,已经从mydependence导入。我看不出setuptools(或buildout)可以忽略您将得到的ImportError。在

如果我看一些示例代码,例如,http://pythonhosted.org/py2app/examples.html我会看到这样的代码:

from setuptools import setup
setup(
    app=["MyApplication.py"],
    setup_requires=["py2app"],
)

注意,py2app没有导入。因此setup_requires显然是一种将“扩展”加载到基本setuptools功能的方法。它不是一种规避基本python导入错误的方法。在

更新:查看@MartijnPieters下面的评论,他在https://stackoverflow.com/a/12061891/27401中有一个解决方案。在

Martijn的例子是这样的:

^{pr2}$

相关问题 更多 >