Python/导入与程序设计
我正在寻找设计我的程序的解决方案 我的程序由3个模块组成:Python/导入与程序设计,python,python-3.x,import,Python,Python 3.x,Import,我正在寻找设计我的程序的解决方案 我的程序由3个模块组成: 班级 功能 其他公用事业 我希望以这种方式构建我的程序: program_folder/ main.py classes_folder/ class_1.py class_2.py functions_folder/ set_of_func_1.py set_of_func_1.py utilities_folder/ set_of_uti
- 班级
- 功能
- 其他公用事业
program_folder/
main.py
classes_folder/
class_1.py
class_2.py
functions_folder/
set_of_func_1.py
set_of_func_1.py
utilities_folder/
set_of_utilities_1.py
set_of_utilities_1.py
我想:
- «classes_folder»中的任何脚本都可以在中导入任何脚本 «函数\文件夹»
- «函数_文件夹»中的任何脚本都无法运行 导入«实用工具»文件夹中的任何脚本
- 所有脚本都是 通常由main.py使用
- «classes_folder»中的所有脚本,
«功能_文件夹»和«实用工具_文件夹»可在工作时进行测试
作为«main»(
一些测试)if uuuuuu name_uuuuu==“uuuuuu main_uuuuuu”:
- «程序文件夹» 可以在我的计算机中的任何位置(不应该有依赖关系 位于«program_folder»的精确路径上
- 更改«classes_folder»中所有脚本的导入搜索路径, «功能文件夹»和«实用工具文件夹»
- 设定电流工作 所有脚本的«program_folder»目录
我的想法看起来不错,还是我在那里遇到了一些意想不到的问题?常见的Python项目结构可能是这样的:
project_name/
setup.py
requirements.txt
project_name/
__main__.py
classes/
__init__.py
class1.py
class2.py
functions/
__init__.py
functions.py
utils/
__init__.py
utils.py
然后,您可以将导入从绝对修改为相对,并使用以下方式运行包:
$ /path/to/project_name> python -m project_name
请注意,setup.py
仅当您想在某些解释器下安装软件包时才需要
注意:另请参见下面的评论
可以创建如下所示的骨架项目:
/path/to/project/
setup.py
my_project/
__init__.py
a/
__init__.py
b/
__init__.py
==> ./my_project/__init__.py <==
print('my_project/__init__.py')
==> ./my_project/a/__init__.py <==
import my_project
print('my_project/a/__init__.py')
==> ./my_project/b/__init__.py <==
import my_project.a
print('my_project/b/__init__.py')
==> ./setup.py <==
from distutils.core import setup
setup(name='my_project',
version='1.0',
description='my_project',
author='author',
packages=['my_project'])
将类和函数拆分为单独的文件夹是如何常见的?函数与UTIL有什么不同?UTIL似乎保证它们有自己的文件夹?要清楚,通常有这样的布局,而不是将UTIL、FUNC、类等拆分到它们自己的文件夹中。只是抄袭了作者的名字,让想法更清晰。根据子文件夹的喜好和项目的逻辑结构,可以将所需的内容放入子文件夹中。
$ python my_project/b/__init__.py
my_project/__init__.py
my_project/a/__init__.py
my_project/b/__init__.py