python怎么发布模块(python代码怎么发送)

http://www.itjxue.com  2023-03-28 13:16  来源:未知  点击次数: 

如何发布自定义的python模块

系统环境:window xp sp3,python2.7

在D盘pydemo目录下创建一个nester目录(此目录为举例说明,属自定义)

在目录中添加两个python程序文件:nester.py和setup.py

nester.py 模块的程序文件,代码如下(实现递归遍历数组):

def print_lol(arr):

for row in arr:

if(isinstance(row , list)):

print_lol(row)

else:

print row

setup.py 保存模块的安装信息,包含模块名称,模块开发者等信息,代码如下:

from distutils.core import setup

setup (

name = 'nester',

version = '1.0.1',

py_modules = ['nester'],

author = 'ken.wong',

author_email = '279639439@qq.com',

description = 'Module demo',

)

注意:

name和py_modules这两个参数一定要与nester.py文件名相同,否则发布安装时会发出模块文件找不到的错误

通过命令行,进入nester目录(D:/pydemo/nester),依次输入下图中红色框的命令

发布模块,但还不能在程序中被调用,还需要安装,接着看

See,安装完成,在python环境下产生一个nester-1.0.1-py2.7.egg-info文件,有点类似php扩展的.dll(windows环境下的)

现在可以在程序中使用刚才安装的nester模块

import nester

movies = ['a','b',['c1','c2']]

nester.print_lol(movies)

这里需要注意一个问题,很多新手会这样调用:

print_lol(movies)

系统会发出这样的一个错误信息:NameError: name 'print_lol' is not defined

原因是当模块创建以后,系统自动创建一个与模块名称相同的命名空间(nester),并将函数放在命名空间中,简单的通过print_lol调用,自然无法找到函数,正确的方法:

nester.print_lol(movies)

直接把命名空间带上即可。

Python模块发布构建安装到Python本地副本中,在终端键入 sudo python3 setup.py install。无法识别sudo

听你描述问题的习惯,似乎你在看一本外省的书。 sudo的确是linux的习惯。在windows下没有。也许mac ios里有。 如果你安装了linux工具到windows,则sudo 也可以有。 或者是你安装cygwin到windows下。在cygwin里。sudo没有。但是大部分linux命令都有。

将sudo 去掉就可以了,另外你需要将python3的执行路径放以系统的环境变量path里。这样就容易自动找到python3了。

在windows环境里,python3的安装目录是开放的,所以不需要象linux下那样,一定要sudo获得超级用户权限。

如何将自己的Python代码打包发布到pypi上

什么是pypi

简单的说pypi是一个python包的仓库,里面有很多别人写好的python库,你可以通过easy_install或者pip进行安装,方便用户更方面的使用你的代码模块。

将代码打包并上传到pypi上,大体上分为以下几步:

1、整理代码的目录结构,方便打包和python的import,为了方便引用,需要将代码模块变成一个包,所以需要将功能代码用目录来整合方便引用,并且需要创建__init__文件,__init__中可以没有内容,也可以在__init__文件中进行import(from .extractor import Document)操作,以减少整体模块引用时import的层数,避免错误。

[html]?view?plain?copy

├──?./tidypage??

│???├──?./tidypage/cleaners.py??

│???├──?./tidypage/extractor.py??

│???├──?./tidypage/__init__.py??

│???└──?./tidypage/titles.py

2、功能模块的目录整理好后,就可以开始整理和添加发布到pypi上所使用的文件了

tidy_page??

├──?LICENSE??

├──?README.rst??

├──?requirements.txt??

├──?setup.py??

├──tidypage??

│???├──cleaners.py??

│???├──extractor.py??

│???├──__init__.py??

│???└──titles.py

就是将原来的目录深移一层,文件夹名称可以根据自己意愿。然后在到第一层的目录下创建些特殊文件,具体你可以看看下面这个文件结构你就明白了

LICENSE文件是授权文件,比如:MIT license, APACHE?license

README.rst 文件想必大家都不陌生,其实就是项目介绍和使用说明

setup文件才是重点,是python模块安装所需要的文件,它的格式如下:

#!/usr/bin/env?python??

from?__future__?import?print_function??

from?setuptools?import?setup,?find_packages??

import?sys??

??

setup(??

????name="tidy-page",??

????version="0.1.1",??

????author="Desion?Wang",??

????author_email="wdxin1322@qq.com",??

????description="html?text?parser,get?the?content?form?html?page",??

????long_description=open("README.rst").read(),??

????license="MIT",??

????url="",??

????packages=['tidypage'],??

????install_requires=[??

????????"beautifulsoup4",??

????????lxml_requirement??

????????],??

????classifiers=[??

????????"Environment?::?Web?Environment",??

????????"Intended?Audience?::?Developers",??

????????"Operating?System?::?OS?Independent",??

????????"Topic?::?Text?Processing?::?Indexing",??

????????"Topic?::?Utilities",??

????????"Topic?::?Internet",??

????????"Topic?::?Software?Development?::?Libraries?::?Python?Modules",??

????????"Programming?Language?::?Python",??

????????"Programming?Language?::?Python?::?2",??

????????"Programming?Language?::?Python?::?2.6",??

????????"Programming?Language?::?Python?::?2.7",??

????],??

)

NAME?名字,一般放你包的名字即可PACKAGES?包含的包,可以多个,这是一个列表DESCRIPTION?关于这个包的描述LONG_DESCRIPTION?参见read方法说明KEYWORDS?关于当前包的一些关键字,方便PyPI进行分类。AUTHOR?谁是这个包的作者,写谁的名字吧AUTHOR_EMAIL?作者的邮件地址URL?你这个包的项目地址,如果有,给一个吧,没有你直接填写在PyPI你这个包的地址也是可以的VERSION?当前包的版本,这个按你自己需要的版本控制方式来LICENSE?授权方式INSTALL_REQUIRES?模块所依赖的python模块

文中的classifiers的内容并不是随便填写的,你需要参照本文参考文档中的PyPI Classifiers来写

3、开始使用Distutils进行打包

为了保证效果,在打包之前我们可以验证setup.py的正确性,执行下面的代码

python setup.py check

输出一般是running check如果有错误或者警告,就会在此之后显示没有任何显示表示Distutils认可你这个setup.py文件。

如果没有问题,那么就可以正式打包,执行下面的代码:

python setup.py sdist

执行完成后,会在顶层目录下生成dist目录和egg目录

tidy_page??

├──?tidy_page/dist??

│???├──?tidy_page/dist/tidy-page-0.1.0.tar.gz??

│???└──?tidy_page/dist/tidy-page-0.1.1.tar.gz??

├──?tidy_page/LICENSE??

├──?tidy_page/README.rst??

├──?tidy_page/setup.py??

├──?tidy_page/tidypage??

│???├──?tidy_page/tidypage/cleaners.py??

│???├──?tidy_page/tidypage/extractor.py??

│???├──?tidy_page/tidypage/__init__.py??

│???└──?tidy_page/tidypage/titles.py??

├──?tidy_page/tidy_page.egg-info??

│???├──?tidy_page/tidy_page.egg-info/dependency_links.txt??

│???├──?tidy_page/tidy_page.egg-info/PKG-INFO??

│???├──?tidy_page/tidy_page.egg-info/requires.txt??

│???├──?tidy_page/tidy_page.egg-info/SOURCES.txt??

│???└──?tidy_page/tidy_page.egg-info/top_level.txt

4、打包完成后就可以准备将打包好的模块上传到pypi了,首先你需要在pypi上进行注册?goto?PyPI Live

注册完成后,你需要在本地创建好pypi的配置文件,不然有可能会出现使用http无法上传到pypi的问题

Create a?.pypirc?configuration file,在用户的home目录下创建.pypirc文件,文件的内容如下

[distutils]index-servers?=??pypi[pypi]repository=

chmod?600?~/.pypirc

python?setup.py?register?-r?pypi

在pypi上注册模块

python setup.py sdist upload -r pypi

上传python文件包,没有问题你就可以在pypi上看到你上传的包了并且可以使用pip搜索和install你的python包了

如何在python中添加自定义模块

1、说明

python添加自定义第三方模块使用pip命令。

2、步骤

以安装requests模块为例说明

1)打开命令行

win+r打开运行,输入cmd点确定

2)切换到python安装目录的script目录下

3)执行命令

pip install requests

4)安装完成

5)验证

进行python命令行,输入

import requests

如不报错则说明安装成功

(责任编辑:IT教学网)

更多

推荐网页背景文章