ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

使用命令行脚本打包python程序

2019-12-01 13:58:03  阅读:379  来源: 互联网

标签:release command-line packaging python


我试图让我的宠物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)中导入必要的模块.

标签:release,command-line,packaging,python
来源: https://codeday.me/bug/20191201/2081061.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有