如何将可执行文件与库文件分开?
我还没有找到让我满意的答案。如果你有适合自己Python或PHP项目的好方法,请分享一下。
我在管理我的PHP和Python项目时遇到了一些问题。这两个语言的代码文件有两种类型:一种是可以在控制台或网页浏览器中运行的文件,另一种是可以从其他文件中引入的文件,用来扩展功能。当我的项目变得越来越大,命名空间或模块树也越来越复杂时,"可执行"文件和库文件在所有文件夹中用相同的文件扩展名并排放置,开始让我感到困惑。如果PHP和Python是预编译语言,那么这些文件就相当于包含main
函数的文件。
举个例子,假设我有一个命名空间com.mycompany.map.address
,里面包含多个.py或.php文件,具体取决于项目。这些文件会包含不同类型地址的模型,以及处理地址的很多函数。此外,它还会包含一些可以从终端运行的可执行文件,提供给用户搜索地址的工具,可能还包括添加和删除数据库中地址的功能。
我想找到一种方法,把这些可执行文件和我命名空间树中成千上万的代码文件区分开来。
如果这些文件有不同的文件扩展名,那就没问题了。但因为它们没有,我在想是否应该分开文件夹之类的,但我不知道该怎么命名这些文件夹。在PHP中,我可以通过配置PHP来解析不同的文件扩展名来解决这个问题,比如我的项目可以包含phps
或phpx
文件。
如果有人有一些不依赖于语言的建议来处理这个问题,我会很感激。这也适用于像C这样的语言,一个项目可能会编译成多个可执行文件。我们应该如何将包含main
函数的源文件与其他文件分开呢?
2 个回答
在我的PHP项目中,我遵循一种很像Java的命名规则(因为我之前的背景):
index.php
/classes/{组织类型:net、org、com}/{组织名称}/{组件}
/includes/ <- 一般配置等;所有这些文件都是不可执行的;
/lib/ <- 第三方库,和特定版本相关;不会修改,只在需要时进行补丁或升级;
/modules/ <- 用于放置在项目范围内编写的扩展
把它们分开,方法可以是按名字、按扩展名或者按位置来分。
举个例子:
这是我们测试自动化系统的布局(输出是手动排序的,方便理解):
$ 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
文件夹。