如何为不同的项目放置公共代码

时间:2015-12-26 14:06:15

标签: python distutils setup.py

我在一个单独的文件夹中有两个python项目。我也有一个共同的代码,我在我的两个项目中使用。

在文件系统上组织它们以使用distutils和setup.py构建它们的最佳方法是什么?

我的第一个想法是使用这样的结构:

workspace
    |
    |- common lib
    |    |
    |    `- ...
    |
    |- project 1
    |    |
    |    |- ...
    |    `- setup.py
    |
    `- project 2
         |
         |- ...
         `- setup.py

并修改项目中的python路径环境变量以查找代码,但是当我编写setup.py文件时遇到了问题。如果我选择公共包的相对路径(.. \ common lib),则distutils会将常用的​​lib文件放在存档之外。

有没有什么好的做法可以同时放置可重用的代码和构建项目?

谢谢!

2 个答案:

答案 0 :(得分:0)

我会查看python的分发工具(start here)。您可以将每个项目设置为自己的独立包,然后像在任何其他python包中一样在您的计算机上安装每个包。此外,您可以在本地计算机上对包进行符号链接,这样,如果您的项目是相互依赖的,项目A中的任何更改都可以立即被其他项目中的代码访问,而无需在进行更改后重新安装项目A. / p>

一般而言,将事物分开会使管理变得更容易。

虽然知道这些项目是什么会有所帮助。它们都是您正在编写的独立库或应用程序吗?

答案 1 :(得分:0)

package_dir中的distutils/setup-tools选项可以在分发树中与源树不同的位置插入一个包(在您的情况下为common_lib)(https://docs.python.org/2/distutils/setupscript.html#listing-whole-packages })。

但据我所知,这只能在创建二进制发行版时正常工作(setup.py bdist);我在这里遇到了这个问题:Inconsistent behaviour of bdist vs sdist when distributing a Python package