我试图让我的宠物Python项目进入可发布的状态,但在打包时就很沮丧.
Mark Pilgrim recommend this directory structure in Dive Into Python
httplib2/
|
+--README.txt
|
+--setup.py
|
+--httplib2/
|
+--__init__.py
|
+--iri2uri.py
我不知道的是,如果我有一个运行程序脚本,即一个可执行的命令行程序,说foo,而我的项目名称是foo,那么我应该如何命名内部软件包目录?
举一个具体的例子,如果我有
README.md
LICENSE
somefile1.py
somefile2.py
foo
打包此内容的最佳方法是什么?
例如
+--README.md
|
+--LICENSE
|
+--foo
|
+--foo/
|
+--somefile1.py
|
+--somefile2.py
由于名称重复,因此无法使用.
解决方法:
你这样做是错的…
这是“应该”结构的样子
foo 1.0/
| +--README.txt
| +--setup.py
| +--foo/__init__.py
| +--foo/iri2uri.py
| +--foo/httplib2/__init__.py
| +--foo/httplib2/bar.py
将外部的封闭文件夹视为包装.这应该包括安装和说明文件LICENSE,README,MANIFEST,setup.py.包中的文件夹(在本例中为’/ foo’)是模块.
要访问上述所有功能,请使用以下导入语句:
import foo # represented by foo/__init__.py
import foo.iri2uri # represented by foo/iri2uri.py
import foo.httplib2 # represented by foo/httplib2/__init__.py
import foo.httplib2.bar # represented by foo/httplib/bar.py
从技术上讲,您可以选择将子模块包括为文件或文件夹.只有在子模块的子模块中才需要文件夹.
例如:
foo 1.0/
| +--/foo/iri2uri.py
| +--/foo/iri2uri/__init__.py
两者将以相同的方式解释.
例如:
import foo.iri2uri
刚开始时有些棘手,但是每个曾经为安装构建软件包的人都遇到了这种减速.
更新:我认为这可以更好地回答您的问题
对于可执行文件,您创建一个单独的程序包
无需安装程序,因为此代码不会被其他应用程序导入.
examples/
| +--/foo.py
它们应作为独立程序运行,并从您安装的库(foo)中导入必要的模块.