15.1 hierarchy of Clear directory structure
1. High readability : people who are unfamiliar with the code of this project can read the directory structure at a glance, know which program startup script is, where the test directory is, where the configuration file is, and so on. To get to know this project very quickly.
2. High maintainability : Once you have defined your organization's rules, the maintainer will be able to know exactly what directory the new file and code should be placed in. The benefit is that as time goes on, the size of the code / configuration increases and the project structure is not cluttered and can still be well organized.
15.2 Directory organization method
Assuming that your project is named Foo, I would recommend the most convenient and quick directory structure that would suffice :
foo/
|--bin/
| |--Foo
|
|--foo/
| |--tests/
| | |--__init__.py
| | |--test_main.py
| |
| |--__init__.py
| |--main.py
|
|--docs/
| |--conf.py
| |--Abc.rst
|
|--setup.py
|--Requirements.txt
|--README
briefly explain :
Bin/: To store some executable files of the project, of course you can name script/and so on.
foo/: Stores all source code for the project. (1) All modules and packages in the source code should be placed in this directory. Do not place the top level directory. (2) Its subdirectory tests/storage unit test code; (3) The entrance of the program is preferably named main.py.
Docs/: Store some documents.
setup.py: Scripts to install, deploy, and package. Setuptools Management
Requirements.txt: A list of external Python packages that store software dependencies.
README: project documentation.
Note: Open source projects may need to increase License.txt,changelog.txt files, etc.
about the Readme content (one file should be available for each project)
it needs to illustrate several things :
Software positioning, the basic functions of the software.
How to run your code : Installation Environment, startup commands, and so on.
Brief instructions for use.
Code directory structure Description, more detailed can explain the basic principles of the software.
FAQ's description.
15.3 calls between different modules
- Relative path and absolute path
#print (__file__) # # #在pycharm上执行的是绝对路径, but the program is executed in the background, printing a relative path
#print (Os.path.abspath (__file__)) # # #动态获得绝对路径
#print (Os.path.dirname (Os.path.abspath (__file__)) # # #找上级父目录
#print (Os.path.dirname (Os.path.dirname (Os.path.abspath (__file__))) # # #找上上级父目录
- Calls between modules
New CatalogAtmin theAtmunder NewPython Packagerespectively isbin,conf,Core,New Cataloglogs. Binunder Newpython filename isatm.py,confNewpython fileto beSetting.py,coreunder Newpython filenamemain.py
now call the core under the atm.py file via the bin main.py The function in the file.
atm.py
Import OS
Import sys
Base_dir = Os.path.dirname (Os.path.dirname (Os.path.abspath (__file__)))
Sys.path.append (Base_dir)
from conf import setting
from core import Main
Main.login ()
main.py
#! Author:lanhan
def Login ():
Print ("Welcome to my ATM")
Python Road -15-Software Catalog Structure specification