将自己写的项目(包)添加到Python系统环境

将自己写的项目(包)添加到Python系统环境

方法一

准备
  1. Python3.x(AnacondaPython环境)
  2. pip 包管理器(模块)
  3. 第三方库: setuptools, wheel(包管理)(安装Anaconda这个环境后,这些模块或包都是自动安装的,如果是其他Python环境,使用[python -m ]pip install 包名来安装)
  4. IDE: PyCharmAnaconda 环境中的 Spyder
  5. 命令提示符(CMD) 或 可以使用bash命令的工具(如Cmder)(建议以管理员身份运行)
开始动手
  1. 在电脑任意位置新建一个文件夹,以项目名称命名
  2. 打开IDE,新建一个工程在这个位置
  3. 在工程下新建一个命名为setup.py的文件,待会再编辑
  4. 在工程下新建一个包,以项目名称命名(与项目同名)
    如果使用PyCharm,包里面会自动生成一个名为__init__.py的文件,如果使用Spyder,则需要自己手动创建,__init__.py文件里面的内容可以为空,可以添加一些东西方便以后用的时候导包
  5. 将写好的包的.py文件复制到包文件夹里,也可以新建.py文件手动敲代码
  6. 如果还有子包,重复4
  7. 现在回去编辑setup.py文件,这里以py_data_structures包做演示,按照下面格式编写
#setup.py
# -*- coding: utf-8 -*-

from setuptools import setup

setup(
    name = 'py_data_structures',    # 项目名称(包名)
    version = '0.9.0',              # 版本号
    description = 'en: Data structure with Python;\n\
              zh_CN:数据结构Python语言描述',    # 包的概括描述
    home_page = '',
    author = 'Mr.Ming',             # 作者
    author_email = 'jmy970618@foxmail.com',     # 作者邮箱
    license = '',
    python_requires='>=3.5, <4',
    packages = ['py_data_structures']           # 包名列表
)
  1. 打开cmd或Cmder(建议以管理员身份打开),使用cd命令切换到setup.py的路径,输入命令
> python setup.py bdist_wheel

Debug并运行完成后会发现setup.py的目录中多了三个文件夹,组织结构如下:

--py_data_structeures
|--.idea
|--build
  |--bdist.win-amd64
  |--lib
    |--py_data_structures
      |-- ...
|--dist
  |--py_data_structures-0.9.0-py3-none-any.whl
|--py_data_structures
  |-- ...
|--py_data_structures.egg-info
  |-- ...
|--setup.py

要使用的就是dist下面的py_data_structures-0.9.0-py3-none-any.whl文件,它其实是一个压缩包,用解压缩软件解压后会得到/py_data_structures/py_data_structures-0.9.0.dist-info两个文件夹,说明已经成功了,这个.whl文件和从这个网站上下载来安装的.whl文件是一样的,可以将.whl发送给小伙伴用后面的步骤安装到python环境中,/build就是Debug是生成的文件夹

  1. 使用cd命令切换到dist中,输入命令
> [python -m ]pip install py_data_structures-0.9.0-py3-none-any.whl

注意:一定是完整文件名

安装完成后可以打开环境中的Python安装路径\Lib\site-packages路径,会看到下面这两个文件夹:

--site-packages
|-- ...
|--py_data_structures
|--py_data_structures-0.9.0.dist-info
|-- ...

说明安装成功,也可使用下面的方法验证

  1. 在cmd或Cmder输入命令
> pip list

会看到


pip list命令查看环境中安装的包及其版本号

输入命令

> pip show py_data_structures

会看到


setup.py文件中编辑的部分信息

输入命令

> python

进入python shell命令脚本

python环境信息

输入python导包的语句测试

>>> import py_data_structures as pyds
>>> dir(pyds)

展示了包中的信息,其实是__init__.py文件中的函数和方法,由于目前是空文件,只有一些内置函数,待以后完善

__init__.py文件中的内置函数

导入其中的Tree模块

>>> from py_data_structures import Tree
>>> dir(Tree)

展示了Tree模块中声明的类和函数

Tree中声明的类和函数

这种方法你学会了吗?以后要导入之前写好的项目就很方便了
可以从倒数第二点导包那里可以看出,包里的模块并没有导过来,是因为__init__.py文件是空文件,还需要日后完善

方法二

准备
  1. Python3.x(AnacondaPython环境)
  2. pip 包管理器(模块)
  3. 第三方库: distutils(安装Anaconda这个环境后,这些模块或包都是自动安装的,如果是其他Python环境,使用[python -m ]pip install 包名来安装)
  4. IDE: PyCharmAnaconda 环境中的 Spyder
  5. 命令提示符(CMD) 或 可以使用bash命令的工具(如Cmder)(建议以管理员身份运行)
动手

1-6和方法一相同,下面开始编辑setup.py文件,以py_da包做演示,按照下面格式编辑

#setup.py
# -*- coding: utf-8 -*-

from distutils.core import setup

setup(
    name = 'py_ds',
    version = '0.8.8',
    description = 'en: Data structure with Python;\n\
              zh_CN:数据结构Python语言描述',    # 包的概括描述
    home_page = '',
    author = 'Mr.Ming',             # 作者
    author_email = 'jmy970618@foxmail.com',     # 作者邮箱
    license = '',
    python_requires='>=3.5, <4',
    packages = ['py_ds']           # 包名列表
)
  1. 打开cmd或Cmder(建议以管理员身份打开),使用cd命令切换到setup.py的路径,输入命令
~$ python setup.py sdist

Debug并运行完成后或发现setup.py的目录多了一个文件夹和一个文件,组织结构如下:

--py_ds
|--.idea
|--dist
  |--py_ds-0.8.8.tar.gz
|--py_ds
  |-- ...
|--MANIFEST
|--setup.py

/dist文件夹下面是一个压缩包py_ds-0.8.8.tar.gz,并且是一个双层压缩包,可以将这个压缩包发送给小伙伴用后面的步骤安装到python环境中,现在对压缩包进行解压,第一次解压产生一个/dist文件夹,里面有一个压缩包py_ds-0.8.8.tar,再解压产生一个/py_ds-0.8.8文件夹,组织结构如下:

--py_ds-0.8.8
|--build
  |--lib
    |--py_ds
      |-- ...
|--py_ds
  |-- ...
|--PKG-INFO
|--setup.py

打开这个setup.py文件会发现,其实这个文件中的内容和前面编辑的setup.py文件中的内容一模一样,使用cd命令切换到setup.py的路径

~$ cd dist/dist/py_ds-0.8.8

输入命令

~$ python setup.py install

安装完成后可以打开环境中的Python安装路径\Lib\site-packages路径,会看到下面这个文件夹和这个文件:

--site-packages
|-- ...
|--py_ds
|-- ...
|--py_ds-0.8.8-py3.6.egg-info
|-- ...

说明安装成功,也可使用下面的方法验证

  1. 在cmd或Cmder输入命令
~$ pip list

会看到


pip list命令查看环境中安装的包及其版本号

输入命令

~$ pip show py_ds

会看到


setup.py文件中编辑的部分信息

输入命令

~$ python

进入python shell命令脚本

python环境信息

输入python导包的语句测试

>>> import py_ds
>>> dir(py_ds)

展示了包中的信息,其实是__init__.py文件中的函数和方法,由于目前是空文件,只有一些内置函数,待以后完善

__init__.py文件中的内置函数

导入其中的LinkList模块

>>> from py_ds import LinkList
>>> dir(LinkList)

展示了LinkList模块中声明的类和函数

LinkList中声明的类和函数

这种方法你学会了吗?以后要导入之前写好的项目就很方便了
可以从倒数第二点导包那里可以看出,包里的模块并没有导过来,是因为__init__.py文件是空文件,还需要日后完善

补充
  1. 推荐使用第一种方法,因为第一种可以直接使用命令
~$ pip uninstall 包名

进行卸载,而第二种只能进入Python的安装环境手动删除

  1. 如果不想产生第一种方法的.whl安装压缩包或第二种方法的.tar.gz压缩包,可以使用下面的方法安装到库
    使用cd命令切换到编辑的setup.py文件目录,输入命令
~$ python setup.py install

对于第一个setup.py文件,安装完成后,会发现setup.py的目录中多了三个文件夹,组织结构如下:

--py_data_structeures
|--.idea
|--build
  |--bdist.win-amd64
  |--lib
    |--py_data_structures
      |-- ...
|--dist
  |--py_data_structures-0.9.0-py3.6.egg
|--py_data_structures
  |-- ...
|--py_data_structures.egg-info
  |-- ...
|--setup.py

/py_data_structures/py_data_py_data_structures.egg-info这两个文件夹复制到Python环境,使用前面的命令检查
对于第二个setup.py文件,安装完成后,会发现setup.py的目录中多了一个文件夹,组织结构如下:

--py_data_structeures
|--.idea
|--build
  |--lib
    |--py_ds
      |-- ...
|--py_ds
|--setup.py

Python看到下面这个文件夹和这个文件:

--site-packages
|-- ...
|--py_ds
|-- ...
|--py_ds-0.8.8-py3.6.egg-info
|-- ...

使用前面的命令检查

建议使用第一种方法,并生成.whl文件

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,830评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,992评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,875评论 0 331
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,837评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,734评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,091评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,550评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,217评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,368评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,298评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,350评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,027评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,623评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,706评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,940评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,349评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,936评论 2 341

推荐阅读更多精彩内容