跳至主要內容

PyQt_Node_Editor

LincZero大约 4 分钟

PyQt_Node_Editor

目录

设置包的测试和文档

How to create python package 步骤详见链接,这个链接的内容的视频教程里打开网页的内容也有所不同

pip官网参考:(packaging.python.org)

  • https://packaging.python.org/en/latest/tutorials/packaging-projects/ (https://packaging.python.org > Tutorials 教程 > Packaging Python Projects 包装Python项目)

项目结构

packaging_tutorial/
└── src/
    └── example_package/
        ├── __init__.py
        └── example.py

项目准备 - 创建包文件

packaging_tutorial/
├── LICENSE
├── pyproject.toml
├── README.md
├── setup.cfg
├── src/
│   └── example_package/
│       ├── __init__.py
│       └── example.py
└── tests/

创建测试目录 tests/

tests/是测试文件的占位符。 暂时将其留空。

创建 pyproject.toml

pyproject.toml告诉构建工具(如 pip open in new windowbuild open in new window) 构建您的项目需要什么。 本教程使用 setuptools open in new window, 如此开放 pyproject.toml并输入以下内容:

[build-system]
requires = ["setuptools>=42"]
build-backend = "setuptools.build_meta"

配置元数据 setup.cfg/setup.py

元数据有两种类型:静态和动态。

  • 静态元数据 ( setup.cfg):保证每次都一样。 这是 更简单,更易于阅读,并避免了许多常见错误,例如编码错误。
  • 动态元数据( setup.py):可能是不确定的。 任何物品 动态或在安装时确定,以及扩展模块或 setuptools 的扩展,需要进入 setup.py.

选择

  • 静态元数据 ( setup.cfg) 应该是首选。
  • 动态元数据( setup.py) 只应在绝对必要时用作逃生舱口。 setup.py习惯于 是必需的,但可以在较新版本的 setuptools 和 pip 中省略

创建 README.md

随便,就是个md文件

创建许可证 LICENSE

请参阅 https://choosealicense.com/ > license preferred by the communityopen in new window

例如MIT:

MIT License

Copyright (c) [year] [fullname]

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

包括其他文件

上传

生成分发档案

下一步是为 open in new window发包。 这些是上传到 Python 的档案 包索引,可以通过 pip open in new window

tar.gz文件是 源存档 open in new window,而 .whl文件是一个 内置的发行版 open in new window。 较新 pip open in new window版本优先安装内置发行版

上传分发档案

要注册帐户,请访问 https://test.pypi.org/account/register/

使用

安装新上传的包

全自动配置

Cookiecutter 工具(Github开源)

pip
where pip

pip install cookiecutter
cookiecutter https://github.com/audreyr/cookiecutter-pypackage
	full name: Pavel Krupala
	email: pavel.krupala@gmail.com
	github_username: pavelkrupala
	project_name: Node Editor
	project_slug: template
	project_short_description: 
	pypi_username:
	version [0.1.0]: 0.9.0
	user_pytest [n]:
	use_pypi_deployment_with_travis [y]: n
	add_pyup_badge [n]: n
	Choose from 1, 2: 2
	create_author_file [y]:
	Select open_source_license: 1
>

上手

将项目包装到package中

  • PyCharm > 菜单 > File > Settings > Project: NodeEditor > Project Interpreter:设置Project Interpreter(用哪个解释器)

  • 将启动Script设置为example_test中的main.py

  • 用Cookiecutter配置

  • 创建Package

    • 项目名右键 > New > Python Package: nodeeditor,并复制项目文件进去

    • 项目名右键 > New > Python Package: tests

    • 两个包的 __init__.py 加上下面的注释

      # -*- coding: utf-8 -*-
      

自动生成一些东西

  • 检查根目录下自动生成的 requirements.txt 文件

    pip install -r requirements.txt
    
  • 弄出下面的项目结构

    NodeEditor
    	docs
    	examples
    		example_test
        nodeeditor
        	__init__.py
        	(NodeEditor项目)
        template
        	(Cookiecutter配置出来的东西)
        	tests
        		__init__.py
        		test_template.py
        tests
        	__init__.py
        	test_000_import.py (复制下_template/tests/test_template.py里的内容)
        		from nodeeditor.node_scene import Scene
        .gitignore
        LICENCE
        README.rst
        requirements.txt
        setup.py
        HISTORY.rst (Cookiecutter配置,即template文件夹里移出来的)
    
  • 教学视频 17:30 开始的配置看不懂了

    • setup.py 的修改、pip里就可以看到安装了nodeeditor
    pip install -e .
    
    # 安装与卸载
    pip un install template  # 可以通过setup.py将template改成nodeeditor
    	y
    pip
    	# ...
    	# nodeeditor	0.9.0	(包的路径)
    	# ...
    pip uninstall nodeeditor
    
    python setup.py sdist  # 会生成./dist/nodeeditor-0.9.0.tar.gz
    
    # wheel方式 - 安装与卸载
    pip install wheel
    python setup.py bdist_wheel  # 会生成./build/bdist.win-amd64、./build/lib/nodeeditor、./dist/nodeeditor-0.9.0.py3-none-any.whl
    pip install dist\nodeeditor-0.9.0.py3-none-any.whl
    	# ...
    	# nodeeditor	0.9.0
    	# ...
    pip uninstall nodeeditor
    
    
    
    
    

    断言测试

    assert()
    

自动生成docs目录 (使用文档)

详见www.sphinx-doc.org/en/1.5/theming.html

还可以通过修改conf.py来使用不同的主题

sphinx-quickstart
# ... 一堆配置

make html