我有一个当前处于以下文件夹结构的应用程序:
myapp/
client/
core/
server/
template_files/
它具有服务器端和客户端组件,当我将代码部署给用户时,我也不想包含服务器端代码。无论client
和server
需要的core
代码运行。
阅读有关一般Python项目结构的信息,我意识到我应该首先将结构更改为:
myapp/
myapp/
client/
core/
server/
template_files/ (template is only needed by the server)
bin/
setup.py
构造目录和进行代码部署的最佳方法是什么?
您可能希望拥有三个单独的软件包而不是一个,即使您的第二个结构也将导致一个包含所有子模块的软件包(python鸡蛋),这将导致服务器代码与客户端代码打包在一起。
你想要的是他们,分割成三个独立的包(即myapp.client
,myapp.core
和myapp.server
),他们将有分隔的目录结构,因此,实际上你会碰到这样的
myapp.client/
myapp/
client/
setup.py
myapp.core/
myapp/
core/
setup.py
myapp.server/
myapp/
server/
template_files/
setup.py
由于它们都将成为正确的python软件包,因此您可以在setup.py
formyapp.client
和myapp.server
require中定义依赖项myapp.core
,因此,如果/在将软件包部署到pypi(或其他)上时,您的用户可以轻松地pip install myapp.client
将客户端库与依赖项已获取。
您不一定必须bin
在任何地方都有一个。您可以利用entry_points
该setup
函数中的属性,以使setuptools以与操作系统无关的方式为您创建“二进制”。只需在您的库中定义主要功能,然后让setuptools为您的用户创建可执行文件即可。
最后,您可能想看看其他开源项目在打包其库时做了什么,下面是一些示例:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句