【发布时间】:2014-11-12 08:52:10
【问题描述】:
好的,我承认这个问题对于这个论坛来说可能有点过于元,但让我描述一下情况。我有一个包含 10 个包的大型 Python 项目。我正在使用 git。提交会在我的远程服务器(teamcity)上触发测试,如果我愿意,我会在远程服务器上安装它(通过创建一个全新的 conda 环境)。这种效果很好,但不能很好地扩展,我已经阅读了关于 setuptools 的信息。
在 Java 世界中,我之前使用过 Nexus,并与 Maven 结合使用,这简直就是天堂。我希望 setuptools 能让我更接近这种情况。
所以我将我的项目分成几个项目(假设是母亲和一个孩子),因此必须在本地安装底层项目(以确保子项目可以访问它)。假设我的基础项目(母亲)是 pytools:
from setuptools import setup
setup(
name='pytools',
version='0.4',
packages=['pytools'],
description='', requires=['pandas'],
test_suite="test.suite.suite"
)
然后我使用 python setup.py install 在本地安装它以确保孩子可以使用它。 我想这是根本性的错误。
安装后,我将鸡蛋放在 sys.path 中非常显眼的位置,我想避免弄乱 sys.path。它是如此之高,以至于在 IDE 中使用 pytools 变得很困难。
我假设我应该在只提供 pandas 的环境中开发 pytools 并且永远不会在其中安装它?那么第二个项目如何访问 pytools 呢?一种方法是将鸡蛋从 dist 文件夹(您是否在 git 中提交 dist 文件夹?)复制到任何其他项目中?或者告诉 setuptools 仓库的位置,以确保子项目可以安装 pytools?
那你怎么测试呢?服务器上的测试在运行之前构建了一个全新的环境?
在您将我指向 setuptools 的文档之前(非常感谢),您应该假设我已经阅读了它。但通常它会引发一系列全新的问题,并且它提供的惊人的力量和灵活性提供了做出一些非常糟糕的决定的可能性。因此,我向专家寻求有用的 cmets,也许您甚至愿意分享您如何在多项目、多用户环境中运行 Python。
【问题讨论】:
标签: python setuptools