是否有任何解决方案可以使用setup.py创建python软件包的特定安装?
我想根据要给pip提供的一些参数来安装不同的模块。
修改
也许我的第一条信息不清楚,我将在下面给出更好的解释。
我们有一个共享的python软件包,以便与整个公司的技术人员共享一些代码。该软件包位于私人仓库中,可通过pip安装。
不幸的是,这个软件包变得越来越大,我们现在在尝试安装它时遇到一些性能问题。
我想知道是否有可能以某种方式创建一个自定义的setup.py脚本,该脚本将允许用户仅安装模块的一小部分,而不安装整个模块。
感谢您的帮助
答案 0 :(得分:2)
您的setup.py
中应该有这样一行:
setup(
# ...
packages=find_packages(),
# ...
)
要解决您的问题,您需要使用此find_packages
方法,此函数将返回该项目中的python软件包列表
因此解决方案很简单,即为用户提供setup.py的args,并根据该参数返回选择find_packages
这是一个简化的代码
if '--full' in sys.argv:
packages = find_packages()
elif '--only-module-a':
packages = [p for p in find_packages() if p.startswith('a')]
setup(
# ...
packages=packages,
# ...
)
PS:正如@hoefling评论的那样,此解决方案是一个棘手的问题,可能会给用户带来误解,因此您应将程序包分成较小的子程序包(您仍然可以将其保存在一个存储库中)
答案 1 :(得分:0)
您是否尝试过使用pip freeze > requirements.txt
生成所有已安装软件包的文本文件,编辑该文本文件中所需的软件包和版本,然后pip install -r requirements.txt
将该文件安装在其他位置?