写一个自己的python模块

首先:

        一个良好的习惯是在具体编码前有一个计划,这个计划可以不是特别细致,但是要大致反映出都包括哪些东西。对于程序员来讲,一个常用的软件项目结构是就能反映出这一点。所以对于构建自己的模块的时候,首先大致应该有这几个文件夹:

python自定义包不能被调用_python

下面对他们分别做解释:
        build:   这个文件夹是在编译的时候自己生成的,不是自己创建的,暂不考虑
        dist:     同上
        docs:    这个文件夹主要是存放的当前目录的文档信息,一个优雅的软件(包、模块)是易于使用的,而文档则是快速了解用法的最好东西
        nxdictionary:          这里是主要的代码位置,里面存放各种信息

            ./base:                代码的基本内容,可以自由选择。
            ./configuration:  配置信息,模块的一些默认信息通常放在这个文件夹下,当然可以灵活配置的信息是最好的。
            ./exceprion:        代码中可能存在的异常类,主要是集中在这个文件夹下。这里的原则是能够解决的异常就在代码中处理,不能解决的异常(问题)要及时的抛出,以避免问题扩大!同样对于工作中的,也是如此!!!
            ./script:               这里的是一些常用的脚本,我这里的还加入了一些可用于命令行操作的脚本程序,后面setup.py会提到。
            ./test:                  测试的文件夹,主要是对于模块中的重要代码进行测试,这里我主要是添加了一些单元测试的代码用于测试代码中关键的类,函数
            ./utils:                 一些常用的工具,代码中一些通用的、简单的、不具体属于某个特定类的函数,方法,类等!
            ./main.py            程序(包)的主要入口,里面定义了一些常用的函数,通常这些函数是可以直接 package_name.function 进行调用的。
        script:               外部脚本,与内部脚本只不过是空间不同
        LICENSE:          许可证信息,一般都是要填上的
        README:         要对使用者说的话,嗯,可以写一首诗吧
        requirements:  程序中的所有的依赖信息,可以是用 pip freeze > requirements.txt 生成
        setup.cfg:         这里重要是打包时的一些设置,在这里设置了,就不需要在 setup.py 中设置了
        setup.py:          和上面的作用相同

接下来:滴滴滴滴,写了很多代码,重要程序中的代码都写完了。。。

然后:进行打包,主要是在 setup.py 中加入一些设置,当然,在 setup.cfg 中加入也是可行的!如下:

# coding=utf8
__author__ = 'Administrator'

from setuptools import setup
from setuptools import find_packages

setup(
    name="NXDictionary",
    version=0.1,
    author="lfc",
    author_email="",
    description="This is a framework of dictionary, including the addition of word library, query and other functions.",
    keywords="dictionary",
    packages=find_packages(),
    entry_points={
        'console_scripts': [
            "say_hello=nxdictionary.script.update_db_files:console_print_hello",
            "say_hello=nxdictionary.script.update_db_files:ndx_up",
        ]
    },
    test_suite="nxdictionary.test",  # 指定测试包位置, python setup.py test
    # setup_requires="" 指定安装的依赖,同样可以使用pip freeze > requirements.txt 生成依赖
    dependency_links=[],  # 添加依赖链接
    install_requires=[
        # 'enum34;python_version<"3.4"',
        # 'pywin32 >= 1.0;platform_system=="Windows"', 可基于不同平台指定依赖
    ]
)

接着:打包

python setup.py sdist  # 这里是携带源码的
# 并且会生成相应的压缩文件,安装的时候,pip install it ,或是easy_install it

打包完成后 就会生成相应的内容 

官方文档