如何将可执行文件与库文件分开?

1 投票
2 回答
943 浏览
提问于 2025-04-17 04:19

我还没有找到让我满意的答案。如果你有适合自己Python或PHP项目的好方法,请分享一下。


我在管理我的PHP和Python项目时遇到了一些问题。这两个语言的代码文件有两种类型:一种是可以在控制台或网页浏览器中运行的文件,另一种是可以从其他文件中引入的文件,用来扩展功能。当我的项目变得越来越大,命名空间或模块树也越来越复杂时,"可执行"文件和库文件在所有文件夹中用相同的文件扩展名并排放置,开始让我感到困惑。如果PHP和Python是预编译语言,那么这些文件就相当于包含main函数的文件。

举个例子,假设我有一个命名空间com.mycompany.map.address,里面包含多个.py或.php文件,具体取决于项目。这些文件会包含不同类型地址的模型,以及处理地址的很多函数。此外,它还会包含一些可以从终端运行的可执行文件,提供给用户搜索地址的工具,可能还包括添加和删除数据库中地址的功能。

我想找到一种方法,把这些可执行文件和我命名空间树中成千上万的代码文件区分开来。

如果这些文件有不同的文件扩展名,那就没问题了。但因为它们没有,我在想是否应该分开文件夹之类的,但我不知道该怎么命名这些文件夹。在PHP中,我可以通过配置PHP来解析不同的文件扩展名来解决这个问题,比如我的项目可以包含phpsphpx文件。

如果有人有一些不依赖于语言的建议来处理这个问题,我会很感激。这也适用于像C这样的语言,一个项目可能会编译成多个可执行文件。我们应该如何将包含main函数的源文件与其他文件分开呢?

2 个回答

0

在我的PHP项目中,我遵循一种很像Java的命名规则(因为我之前的背景):

index.php

/classes/{组织类型:net、org、com}/{组织名称}/{组件}

/includes/ <- 一般配置等;所有这些文件都是不可执行的;

/lib/ <- 第三方库,和特定版本相关;不会修改,只在需要时进行补丁或升级;

/modules/ <- 用于放置在项目范围内编写的扩展

1

把它们分开,方法可以是按名字、按扩展名或者按位置来分。




举个例子:

这是我们测试自动化系统的布局(输出是手动排序的,方便理解):

$ ls -1 automation
atf               \ two major homebrew libraries, with many submodules
atflib            / 

atfconfig         configuration files in .py form
configuration     \ configuration files in .ini form
res_manager       /

test_scripts      - scripts to be invoked directly

然后我们把 automation 文件夹放到 PYTHONPATH 里,这样就可以在任何地方用 import atf.<smth> 来引入它。要运行测试时,我们切换到 test_scripts 文件夹。

撰写回答