我正在努力将Python作为我团队开发工具套件的一部分.使用我们使用的其他语言/工具,我们开发了许多可重用的函数和类,这些函数和类特定于我们的工作.这标准化了我们做事的方式,并节省了大量的车轮重新发明.
我似乎无法找到通常用Python处理它的任何示例.现在我在本地驱动器上有一个开发文件夹,下面有多个项目文件夹,还有一个包含可重复使用的类和函数的包和模块的附加"公共"文件夹.这些"通用"模块由多个项目中的模块导入.
Development/
Common/
Package_a/
Package_b/
Project1/
Package1_1/
Package1_2/
Project2/
Package2_1/
Package2_2/
Run Code Online (Sandbox Code Playgroud)
在尝试学习如何分发Python应用程序时,似乎假设所有引用的包都低于顶级项目文件夹,而不是它的附属物.我还想到,也许正确的方法是在单独的项目中开发通用/框架模块,并且经过测试,通过安装到site-packages文件夹将它们部署到每个开发人员的环境中.然而,这也引发了重新分配的问题.
任何人都可以阐明这一点,或者指出我讨论这个问题的资源?
Django 1.6
我在Django表单类中有一个工作代码块,如下所示.我正在构建表单字段列表的数据集可以包含任何字段的初始值,而我在表单中设置该初始值时没有成功.if field_value:下面的块确实填充了初始表单字典属性,但未显示初始值.请注意(如果您想知道)该.initial属性在super()调用之后才存在.
可以这样做吗?
如果是这样,那么我做得不好的事情呢?
谢谢!
def __init__(self, *args, **kwargs):
id = kwargs.pop('values_id', 0)
super(LaunchForm, self).__init__(*args, **kwargs)
# Lotsa code here that uses the id value
# to execute a query and build the form
# fields and their attributes from the
# result set
if field_value:
self.initial[field_name] = field_value
Run Code Online (Sandbox Code Playgroud) 这是我的项目目录结构,其中包括项目文件夹,以及一个"framework"文件夹,其中包含在多个项目中共享的包和模块,这些项目位于层次结构中与项目文件夹相同的级别:
--------------------------------------------------------------
Framework/
package1/
__init__.py
mod1.py
mod2.py
package2/
__init__.py
moda.py
modb.py
My_Project/
src/
main_package/
__init__.py
main_module.py
setup.py
README.txt
--------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
以下是我的setup.py文件内容的部分列表:
--------------------------------------------------------------
from distutils.core import setup
setup(packages=['package1',
'package2.moda',
'main_package'],
package_dir={'package1': '../Framework/package1',
'package2.moda': '../Framework/package2',
'main_package': 'src/main_package'})
--------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
以下是问题:
没有创建dist或build目录
创建了清单文件,但列出了package2中的所有模块,而不仅仅是"moda.py"模块
构建终止时出现错误:README.txt:函数不正确
我不知道我是否有一个问题(可能与我的目录结构有关)或者我是否有多个问题,但我已经阅读了有关Python应用程序分发的所有内容,而且我很难过.