Bootstrap

如何从零开始学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 "", line 1, in     
  print_lol(cast)
NameError: name 'print_lol' is not defined
>>> nester.print_lol(cast)
Palin
Cleese
Idle
Jones
Gilliam
Chapman

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)
Palin
Cleese
Idle
Jones
Gilliam
Chapman

三、注册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错误,如果大家找到解决方法,也可以留言告诉我哦。

 

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