http://www.jb51.net/article/92789.htm

一 首先将模块的目录结构整理如下:

VASPy/
├── LICENSE
├── MANIFEST
├── MANIFEST.in
├── README.rst
├── requirements.txt
├── scripts
│ ├── change_incar_parameters.py
│ ├── create_inputs.py
│ └── ...
├── setup.cfg
├── setup.py
├── tests
│ ├── incar_test.py
│ ├── __init__.py
│ ├── oszicar_test.py
│ ├── outcar_test.py
│ ├── testdata
│ │ ├── CONTCAR
│ │ ├── DOS_SUM
│ │ ├── ELFCAR
│ │ └── ...
│ └── ...
└── vaspy
├── __init__.py
├── iter.py
├── matstudio.py
└── ...

注意上面的MANIFEST.in,requirements.txt, setup.py vaspy以及里面的__init__.py这些是必须

注意vaspy和里面的vaspy的一致。

tests是子包,scripys也是 子包,matstudio.py可以是模块入口文件

MANIFEST.in

此文件在打包的时候告诉setuptools还需要额外打包那些文件,例如我VASPy中的单元测试的测试数据文件我就使用这个文件将其包含进来。当然README,LICENSE这些也可以通过它来一起打包进来。
下面是我自己的MANIFEST.in的内容:

include README.rst
include requirements.txt
include LICENSE
recursive-include scripts *
recursive-include tests *

也就是把一些 必须 的文件还有子包引入进去

vaspy/

此文件夹就是vaspy源代码所在的包。个人理解是一个和模块名同名的文件夹

setup()的参数

name

versions = "vaspy"

是整个项目的名字,打包后会使用此名字和版本号。

 

 

description

是一个简短的对项目的描述,一般一句话就好,会显示在pypi上名字下端。

long_description

是一个长的描述,相当于对项目的一个简洁,如果此字符串是rst格式的,PyPI会自动渲染成HTML显示。这里可以直接读取README.rst中的内容。

url

包的连接,通常为GitHub上的链接或者readthedocs的链接。

packages

需要包含的子包列表,setuptools提供了find_packages()帮助我们在根路径下寻找包,这个函数distutil是没有的。

setup_requires

这个参数定义了VASPy安装和顺利运行所需要的其他依赖项(最基本的),使用pip安装的时候会对这些依赖项进行安装。
关于这个参数与requirements.txt的区别可以参考:install_requires vs Requirements files

classifier

这个参数提供了一系列的分类,在PyPI上会将其放入不同的目录中讲项目进行归类。

#!/usr/bin/env python

from setuptools import setup, find_packages

maintainer = 'Shao-Zheng-Jiang'
maintainer_email = 'shaozhengjiang@gmail.com'
author = maintainer
author_email = maintainer_email
description = "A pure Python library designed to make it easy and quick to manipulate VASP files" long_description = """
=====
test1
=====
.. image:: https://travis-ci.org/PytLab/test1.svg?branch=master
:target: https://travis-ci.org/PytLab/test1
:alt: Build Status
.. image:: https://landscape.io/github/PytLab/test1/master/landscape.svg?style=flat
:target: https://landscape.io/github/PytLab/test1/master
:alt: Code Health
.. image:: https://codecov.io/gh/PytLab/test1/branch/master/graph/badge.svg
:target: https://codecov.io/gh/PytLab/test1
.. image:: https://img.shields.io/badge/python-3.5, 2.7-green.svg
:target: https://www.python.org/downloads/release/python-351/
:alt: platform
.. image:: https://img.shields.io/badge/pypi-v0.8.8-blue.svg
:target: https://pypi.python.org/pypi/test1/
:alt: versions
Introduction
------------
test1 is a pure Python library designed to make it easy and quick to manipulate VASP files.
You can use test1 to manipulate VASP files in command lins or write your own python scripts to process VASP files and visualize VASP data.
In `/scripts <https://github.com/PytLab/test1/tree/master/scripts>`_ , there are some scripts written by me for daily use.
Installation
------------
. Via pip(recommend)::
pip install test1
. Via easy_install::
easy_install test1
. From source::
python setup.py install
If you want to use **mayavi** to visualize VASP data, it is recommened to install `Canopy environment <https://store.enthought.com/downloads/#default>`_ on your device instead of installing it manually.
After installing canopy, you can set corresponding aliases, for example:
.. code-block:: shell
alias canopy='/Users/<yourname>/Library/Enthought/Canopy/edm/envs/User/bin/python'
alias canopy-pip='/Users/zjshao/Library/Enthought/Canopy/edm/envs/User/bin/pip'
alias canopy-ipython='/Users/<yourname>/Library/Enthought/Canopy/edm/envs/User/bin/ipython'
alias canopy-jupyter='/Users/<yourname>/Library/Enthought/Canopy/edm/envs/User/bin/jupyter'
Then you can install test1 to canopy::
canopy-pip install test1
""" install_requires = [
'configparser',
'selenium',
] # Get long description.
#with open("README.rst") as f:
# lines = f.readlines()
#
#long_description = ""
#for line in lines:
# if "Installation" in line:
# break
# else:
# long_description += line name = 'test1'
packages = [
'test1',
]
platforms = ['linux'] # classifiers = [
# 'Development Status :: 3 - Alpha',
# 'Topic :: Text Processing',
# 'License :: OSI Approved :: MIT License',
# 'Programming Language :: Python :: 2',
# 'Programming Language :: Python :: 2.7',
# 'Programming Language :: Python :: 3',
# 'Programming Language :: Python :: 3.5',
# ] setup(author=author,
author_email=author_email,
description=description,
license=license,
long_description=long_description,
install_requires=install_requires,
maintainer=maintainer,
name=name,
packages=find_packages(),
platforms=platforms,
# test_suite="tests",
)

上面 是我自己修改后的,有一些不是必须

模块打包好后,安装方法

python setup.py install

python模块打包方法的更多相关文章

  1. 详解Python模块导入方法

    python常被昵称为胶水语言,它能很轻松的把用其他语言制作的各种模块(尤其是C/C++)轻松联结在一起.python包含子目录中的模块方法比较简单,关键是能够在sys.path里面找到通向模块文件的 ...

  2. Python模块安装方法

    安装Python模块 电子邮件 distutils-sig @ python .组织 作为一个受欢迎的开源开发项目,Python具有活跃的贡献者和用户支持社区,并且根据开放源代码许可条款,其软件可供其 ...

  3. c#项目调用Python模块的方法

    将Python模块用pyinstaller打包成exe程序 下载安装UPX((http://upx.sourceforge.net/)) ,并把路径加到环境变量中. UPX是开源的加壳和压缩exe的程 ...

  4. 两种动态载入修改后的python模块的方法

    方案一:循环导入/删除模块 a.py import sys, time while True: from b import test test() del sys.modules(b) time.sl ...

  5. 使用 from import方法导入Python模块

    比如我们导入一个数学计算的模块 math: >>> import math>>> print math<module 'math' (built-in)> ...

  6. Python模块常用的几种安装方式

    Python模块安装方法 一.方法1: 单文件模块直接把文件拷贝到 $python_dir/Lib 二.方法2: 多文件模块,带setup.py 下载模块包,进行解压,进入模块文件夹,执行:pytho ...

  7. ipython和pip,模块安装方法

    先下载 pip-.tar.gz 解压文件 cmd进入这个加压后的文件 执行 python setup.py install 然后配置环境变量 把 python 下的 Scripts 文件目录添加到 P ...

  8. python模块的打包

    python模块的打包方法: http://blog.csdn.net/five3/article/details/7847551

  9. python开发_常用的python模块及安装方法

    adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheetahcherrypy:一个WEB frameworkctype ...

随机推荐

  1. 刷题总结——Throw nails(hdu4393)

    题目: Problem Description The annual school bicycle contest started. ZL is a student in this school. H ...

  2. 【转发】Build Squid with SSL Bump and ICAP Client

    原文文档:http://docs.diladele.com/administrator_guide_3_4/installation_and_removal/filtering_https.html ...

  3. 2017-7-18-每日博客-关于Linux基本命令CnetOS7系统基本操作命令.doc

    1.root/下 cat  anaconda-ks.cfg 确定是否装base软件组 yum groupinstall base  安装base组ifconfig 命令就可以使用了或者使用ip add ...

  4. git上导出的maven项目转成正常的Dynamic web project

    项目地址:http://git.oschina.net/jiafuwei0407/springmvc,springmvc maven项目 包含日志的测试 restful api 如何在eclipse ...

  5. 关于Bootstrap 利用radio实现tab切换的一个问题

    1.html代码 <div class="col-sm-10 nav nav-tabs" id="typelist" role="tablist ...

  6. 【调试】如何使用javascript的debugger命令进行调试(重要)

    首先安装firebug,在firefox的扩展里搜索安装即可. 然后在页面中启用firebug中的脚本: 然后在网页某些位置加入debugger命令,比如如下页面代码: <!DOCTYPE ht ...

  7. Android BroadcastReceiver使用

    1. 介绍 BroadcastReceiver用于接收广播事件(Intent), 是Android四大组件之一 2. 使用 2.1  实现广播接收类 实现一个广播收类继承BroadcastReceiv ...

  8. aiohttp/asyncio测试代理是否可用

    #!/usr/bin/env python # encoding: utf-8 from proxyPool.db import RedisClient import asyncio import a ...

  9. React中input框设置value报错解析

    react input 不设置onChange的常见错误截图 表单是前端非常重要的一块内容,并且往往包含了错误校验等逻辑.  React对表单元素做了专门的优化处理,他对表单元素做了一些抽象,使得他们 ...

  10. MyBatis报错 Parameter '0' not found. Available parameters are [arg1, arg0, param1, param2]

    修改 <update id="updateStatusById" parameterType="java.lang.Integer"> update ...