写点什么

如何从零开始学 Python:(7)如何解决发布和上传代码过程中遇到的问题?

用户头像
广之巅
关注
发布于: 2021 年 04 月 23 日
如何从零开始学Python:(7)如何解决发布和上传代码过程中遇到的问题?

一、发布的流程

1、首先为模块创建一个文件夹,且文件夹里包含即将发布的模块代码文件。建议:文件夹命名为英文,如 nester。


2、在文件夹中创建一个发布文件,命名为“setup.py”,包含有关发布的元数据,并在文件中编辑以下代码:

from distutils.core import setup 
setup( name='nester', version='1.0.0', py_modules=['nester'], author='admin', author_email='admin@qq.com', url='http://www.headfirstlabs.com', description='A simple printer of nestedlistds',)
复制代码

其中,命令 from distutils.core import setup,是指从 Python 发布工具中导入“setup”函数,括号中均为 setup 函数的参数名,其中 author、author_email、url 和 description,可以自由设定。注意:发布文件中,setup 函数和参数名是固定的。


3、构建一个发布文件。根据《Head First Python(中文版)》书中的步骤:1)首先在 nester 文件夹中打开一个终端窗口

  • 打开终端窗口的方法:之前在检查 Python 安装的版本的时候跟大家说过,通过输入 cmd 打开。但是每次打开命令窗口都要进行输入 cmd,可能会觉得很麻烦。


  • 在这里跟大家说另外一种方法,针对使用的是 Windows 系统,可以直接在程序找到 Windows PowerShell 打开命令窗口。


2)输入命令:python3 setup.py sdist。(这里针对使用的是 Mac OS X 或者 linux 系统)。如果你使用的是 Windows 系统,则需要把“Python3”替换为“C:\python31\python.exe”。


3) 但是,这时候,你会发现在 Windows 系统输入以上命令后,会出现提示:系统找不到指定路径


4) 这时候,你是不是在想,明明操作跟书本上的一致,可为什么会出现这样的提示呢?该如何解决呢?

  • 首先,要找到 nester 文件夹的位置,也就是路径。通过选择文件夹点击右键,查看属性,可以查看到文件的位置,选择复制。


  • 然后,通过输入“cd“ 空格,再粘贴文件的位置,去到 nester 这个文件夹下面。如:C:\Users\admin> cd C:\Users\admin\Desktop\nester。

  • 接着,直接输入指令:python setup.py sdist。

    这时候不是输入“python3 setup.py sdist“,也不需要把“Python3”替换为“C:\python31\python.exe”。如:C:\Users\admin\Desktop\nester>python setup.py sdist。4、将发布安装到你的 Python 本地副本中。根据《Head First Python(中文版)》书中的步骤:

1) 在终端窗口,继续输入命令:sudo python3 setup.py install。注意:这个指令同样是针对使用的是 Mac OS X 或者 linux 系统。


2) 如果在 Windows 系统输入以上命令后,则会出现提示:'sudo' 不是内部或外部命令,也不是可运行的程序或批处理文件


3)  如何解决 Windows 系统输入命令后出现的错误提示呢

  • 这时候需要,去掉“sudo“并把”python3”改为”python”。


5、发布速览。利用 Python 发布工具,这时候模块已经转换为一个发布,并安装在 Python 的本地副本中。

1)   安装前,nester 文件夹里,只有 nester.py 和 setup.py 两个文件。

2)   安装后,nester 文件夹里,除了原来的 nester.py 和 setup.py 两个文件,还多出了 MANIFEST 文件,以及 bulid 和 dist 文件夹。

  • MANIFEST 文件中包含发布的文件列表。

  • bulid 文件夹中还包含了一个 lib 文件夹,文件夹里包含了 nester.py 文件。

  • dist 文件夹里包含 nester-1.0.0.tar.gz 发布包。

  • 这时候,你会发现,Windows 系统下,安装后的 nester 文件夹里没有 nester.pyc 这个“编译”版本的代码文件。在哪里可以找到这个文件呢?

  • 看回上面的命令窗口,你会发现后缀以.pyc 结尾的文件路径,按照那个路径去找,其实是可以找到这个“编译”版本的代码文件的。


二、导入模块并使用

1、方法一:使用普通的 import 语句导入

1) 打开 IDLE,使用指令:import 模块名称。

2) 定义一个列表。

3) 调用模块中的函数,输出列表内容。


注意:当代码放在单独的模块中时,Python 会自动创建一个与模块同名的命名空间。所以调用模块中的函数时,就需要用该模块的命名空间名对这个函数的调用做出限定,否则,在调用模块中的函数时会出现 NameError 错误,因为你没有对名做出限定。例如《Head First Python(中文版)》书中的例子:

>>> import nester>>> cast=["Palin","Cleese","Idle","Jones","Gilliam","Chapman"]>>> print_lol(cast)Traceback (most recent call last):    File "<pyshell#2>", line 1, in <module>      print_lol(cast)NameError: name 'print_lol' is not defined>>> nester.print_lol(cast)PalinCleeseIdleJonesGilliamChapman
复制代码


2、方法二:使用特定的 import 语句导入。

1) 打开 IDLE,使用指令:from 模块 import 函数,导入模块中特定的函数。

2) 定义一个列表。

3) 调用模块中的函数,输出列表内容。


例如《Head First Python(中文版)》书中的例子:

>>>from nester import print_lol>>>cast=["Palin","Cleese","Idle","Jones","Gilliam","Chapman"]>>>print_lol(cast)PalinCleeseIdleJonesGilliamChapman
复制代码


三、注册 PyPI 网站,并向 PyPI 上传代码

1、注册 PyPI 网站

1)  访问 PyPI 网站:http://pypi.python.org/

2)  点击首页 Register 进行注册,填写用户名、密码、邮箱等信息。

3)  注册完成后,Email 会收到一封确认的链接,点击链接进行确认。


2、向 PyPI 上传代码

1)   通过命令窗口注册 PyPI

  • 打开命令窗口,输入指令:python3 setup.py register,这里针对使用的是 Mac OS X 或者 linux 系统。如使用的是 Windows 系统,则在命令窗口输入指令:python setup.py register。注意:同样是要通过“cd”去到相应的文件夹。


  • 这时候,你会发现报 410 错误。也就是说被请求的资源在服务器上已经不再可用,而且没有任何已知的转发地址。目前暂时只能跳过这个步骤。


2)  通过命令窗口上传代码。

  • 打开命令窗口,输入指令:python3setup.py sdist upload,这里针对使用的是 Mac OS X 或者 linux 系统。如使用的是 Windows 系统,则在命令窗口输入指令:python setup.py sdist upload。注意:同样是要通过“cd”去到相应的文件夹。


  • 这时候,你会发现报 403 错误,这是在网站访问过程中,常见的错误提示,表示资源不可用


在向 PyPI 上传代码过程中,出现报 401 和 403 错误,如果大家找到解决方法,也可以留言告诉我哦。

 

以上是,一个文科生,一个职场女性,一个小白,在发布和上传代码过程遇到的问题和解决办法,欢迎留言一起来交流~

发布于: 2021 年 04 月 23 日阅读数: 35
用户头像

广之巅

关注

还未添加个人签名 2020.10.24 加入

还未添加个人简介

评论

发布
暂无评论
如何从零开始学Python:(7)如何解决发布和上传代码过程中遇到的问题?