在 Python 中安装本地附加组件
我的包 X 的 setup.py 使用 setuptools 通过 extras_require
参数有选择地安装额外的包 Y。
现在,Y 包从 PyPi 中消失了,据我所知,也从可见的互联网上消失了。 easy_install X[Y]
失败并出现 错误:无法找到适合 Y 的发行版
。
不过,我仍然有 Y 的 tarball 的本地副本。 Y 是一个纯Python 包。
修改 setup.py 以允许此(本地?)可选额外功能的最佳方法是什么?
编辑:修复是暂时的,直到我找到合适的替代品。我不想想自己开始正式维护 Y :)
setup.py of my package X uses setuptools to optionally install an extra package Y, via the extras_require
parameter.
Now package Y disappeared from PyPi and, as far as I can tell, from the visible Internet. easy_install X[Y]
fails with error: Could not find suitable distribution for Y
.
However, I still have a local copy of Y's tarball. Y is a pure-Python package.
What is the best way to modify setup.py to allow this (local?) optional extra?
EDIT: The fix is meant to be temporary, until I figure out a proper replacement. I do not want to start officially maintaining Y myself :)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以子类
setuptools.Command
然后重载默认安装
命令。然后你可以让它执行一个安装依赖项的子进程。这是一个黑客,但这就是你所要求的!在 setup.py 中:
我过于简单化了它,但这是基本要点。
You could subclass
setuptools.Command
and then overload the defaultinstall
command. Then you could have THAT execute a subprocess that installs the dependency. It's a hack, but that's what you were asking for!In setup.py:
I'm grossly oversimplifying it, but this is the basic gist.
我通过 setuptools 的
dependency_links
选项找到了一个快速解决方法。http://URL_Y
。dependency_links = ['http://URL_Y'],
添加到我的 setup.py 中。现在
easy_install X[Y]
可以工作了,我不必在任何地方注册 Y。一旦我得到适当的修复,我就会将其从 URL_Y 中删除。I found a quick workaround via the
dependency_links
option of setuptools.http://URL_Y
.dependency_links = ['http://URL_Y'],
to my setup.py.Now
easy_install X[Y]
works and I didn't have to register Y anywhere. I will delete it from URL_Y as soon as I have a proper fix.