如何从零开始学 Python:(7)如何解决发布和上传代码过程中遇到的问题?
一、发布的流程
1、首先为模块创建一个文件夹,且文件夹里包含即将发布的模块代码文件。建议:文件夹命名为英文,如 nester。
2、在文件夹中创建一个发布文件,命名为“setup.py”,包含有关发布的元数据,并在文件中编辑以下代码:
其中,命令 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(中文版)》书中的例子:
2、方法二:使用特定的 import 语句导入。
1) 打开 IDLE,使用指令:from 模块 import 函数,导入模块中特定的函数。
2) 定义一个列表。
3) 调用模块中的函数,输出列表内容。
例如《Head First Python(中文版)》书中的例子:
三、注册 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 错误,如果大家找到解决方法,也可以留言告诉我哦。
以上是,一个文科生,一个职场女性,一个小白,在发布和上传代码过程遇到的问题和解决办法,欢迎留言一起来交流~
版权声明: 本文为 InfoQ 作者【广之巅】的原创文章。
原文链接:【http://xie.infoq.cn/article/9da632930432fc109888fe45d】。文章转载请联系作者。
评论