And*_*dré 72 python project-structure project-organization pydev
我是Python的新手,我正在开始一个迷你项目,但我对如何在"Python方式"中组织文件夹有一些疑问.
我PyDev在我的开发环境中使用,当我创建一个新项目时,会创建一个名为的文件夹src
+ src
Run Code Online (Sandbox Code Playgroud)
现在,在PyDev,我可以创造Pydev Module和PyDev Package
我需要以下列方式组织我的项目:
+ Indicators
- Moving_averages.py
- Stochastics.py
+ Strategies
- Moving_averages_cross.py
- example.py
Run Code Online (Sandbox Code Playgroud)
如何根据模块和包进行组织?Modules and Packages是什么意思?
最好的祝福,
Bot*_*res 47
Package基本上是一个包含__init__.py文件的文件夹,通常是一些模块,其中Module是一个*.py文件.它import主要与.如果您添加__init__.py到指标,您可以使用:
from Indicators.Stochastics import *
Run Code Online (Sandbox Code Playgroud)
要么
from Indicators import Stochastics
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我建议保持模块/包名称小写.它不会影响功能,但它更"pythonic".
Obe*_*nne 37
从文件系统的角度来看,a .py是以__init__.py和结尾的文件,a some是再次包含foofoos和(嵌套)thing的文件夹.Python将文件夹识别为barbar包含.py文件的文件夹.
像这样的文件结构
some/
__init__.py
foofoo.py
thing/
__init__.py
barbar.py
Run Code Online (Sandbox Code Playgroud)
定义了__init__.py some,它有一个foofoo thing嵌套包barbar,它还有一个模块.py.但是,在使用包和模块时,您并没有真正区分这两种类型:
import some
some.dothis() # dothis is defined in 'some/__init__.py'
import some.foofoo # <- module
import some.thing # <- package
Run Code Online (Sandbox Code Playgroud)
选择命名包/模块时请遵循PEP8(即使用小写名称).
Vit*_*eev 26
目录结构
.
|-- bin
| `-- my_program
|-- docs
| `-- doc.txt
|-- my_program
| |-- data
| | `-- some_data.html
| |-- __init__.py
| |-- submodule
| | `-- __init__.py
| |-- helpers.py
|-- tests
| |-- __init__.py
| |-- test_helpers.py
|-- Makefile
|-- CHANGES.txt
|-- LICENSE.txt
|-- README.md
|-- requirements-dev.txt
|-- requirements.txt
`-- setup.py
Run Code Online (Sandbox Code Playgroud)
猫Makefile
PYTHON=`which python`
NAME=`python setup.py --name`
all: check test source deb
init:
pip install -r requirements.txt --use-mirrors
dist: source deb
source:
$(PYTHON) setup.py sdist
deb:
$(PYTHON) setup.py --command-packages=stdeb.command bdist_deb
rpm:
$(PYTHON) setup.py bdist_rpm --post-install=rpm/postinstall --pre-uninstall=rpm/preuninstall
test:
unit2 discover -s tests -t .
python -mpytest weasyprint
check:
find . -name \*.py | grep -v "^test_" | xargs pylint --errors-only --reports=n
# pep8
# pyntch
# pyflakes
# pychecker
# pymetrics
clean:
$(PYTHON) setup.py clean
rm -rf build/ MANIFEST dist build my_program.egg-info deb_dist
find . -name '*.pyc' -delete
Run Code Online (Sandbox Code Playgroud)
Ric*_*ick 13
您可能想要查看modern-package-template库.它提供了一种为项目设置非常好的基本布局的方法,该项目将引导您完成一些问题并尝试帮助您获得能够相当容易地分发的内容.
http://pypi.python.org/pypi/modern-package-template
在决定项目结构之前,最好问问自己项目的目的是什么.这会是一次性分析吗?你想调查的玩具概念?您打算分发的完整项目?您希望用于构建项目的工作量将有所不同.
如果您想构建项目以便以后可以分发它,并且它可以扩展到许多模块,我建议使用以下结构:
projectname
??? MANIFEST.in
??? setup.py
??? README
??? .gitignore
??? .git
??? projectname_env
??? projectname
??? __init__.py
??? subpackageone
? ??? __init__.py
? ??? second_module.py
? ??? tests
? ? ??? test_second_module.py
? ??? models
? ??? model1
??? first_module.py
??? tests
??? test_second_module.py
Run Code Online (Sandbox Code Playgroud)我喜欢这个结构的详细原因在我的博客文章中,但基本要点是层次结构较低级别的projectname目录包含您的实际项目.除此之外,它还有助于管理(git)和打包(setup.py,MANIFEST.in)的所有工具.
| 归档时间: |
|
| 查看次数: |
57145 次 |
| 最近记录: |