Packaging Your Python Code With pyproject.toml | Complete Code Conversation

preview_player
Показать описание
Learning how to package your code can seem overwhelming. This complete 52 minute conversation takes you through the steps one at a time, using modern best practices.

- Being able to call your project from anywhere
- Playing on the same team as the import system
- Allowing for consistent imports
- Having one file that’ll work for many build systems

This is the complete conversation but the course is hosted here, if you want to learn more or find additional resources:

And you'll learn how to:

- Structure files and folders in your project
- Understand different ways to run your script
- Explore how the import system works
- Explore the Python packaging world
- Install your pacakge with pip
Рекомендации по теме
Комментарии
Автор

timestamps:
1:40 running the first cli using python .cli.py
4:20 create directory "snakesay" to contain project. which will be the name of the package
move all files to that folder
5:10 python snakesay does not work. need __main__. but still runs using .\snakesay\cli.py
6:48 rename clip.py to __main__
7:30 python snakesay works now, but...
8:15 if you call a folder it needs to have __main__
8:40 python -m to call module, does not work as python looks in its path
9:45 python uses two paths, the active path, and another path of all libraries.
13:45 absolute imports " from snakesay import snake" is needed when using -m
ans points to snake module explicity
15:05 now "python snakesay" does not work again due to module not found
15:30 python with -m searches for different paths
to get both "python" and "python -m" both working
16:00 you should not sys.path.append(yourpath)
this will work, but does not scale well. this is commonly used but is a bad practice
scaling problem is that you cant share it easily and does not help you merge programs
17:25 the plan is to install the package, you will pip install, but no need to upload it anywhere
you can pip install your directory.
18:00 you will be able to use consistent inports and it will work in any CWD
19:00 historical solutions
20:24 intro to setuptools. it is not part of the standard library.
22:00 most importantant PEPs on how to setup packagages historically. messy history
22:50 create a local package
23:00 create pyproject.toml one directory up all consifg can be placed here, this replaces setup.py, or setup.cfg
24:20 setuptools home page shows config setup tools using .toml, build system, project, and optional dependenace,
like a dictionary
25:50 PEP 621 storing metadata in pyproject.toml
26:40 toml is not python specific, it is general
27:05 copy the build-system section from the and paste into pyproject.toml
30:44 create "snakesay-project" and move contents into it
31:40 and move the .toml into the project folder and now install this into a virtual environment
32:00 in the project folder python -m venv venv
32:20 for windows activate the venv by ".\venv\Scripts\activate
32:50 in the toml create the [project] name = "snakesay" version ="1.0.0"
33:30 inside the snake-project folder python -m pip install -e . to allow changes updates to the source code
36:20 "Successfull installed snakesay-1.0.0" now can can call it from anywhere using with or without the -m flag
37:50 now you can "import snakesay" in any python script when the venv is activated
38:20 now there is no reason to think about the path, or relative imports, even if deep inside you package, you can always "from snakesave import snake"
38:48 the last step, to create an entry point, so that it is recognized by the terminal.
39:20 including project scripts to create an entry point, updating the .toml
41:50 need to pip instal the pyproject as changes where made to it.
42:30 now you can go anywhere on the commange line and call your program, but now it calls the program twice
43:40 to fix you need if __name__== "__main__" in the __main__.py
4920 Flint, Poetry support .toml as well now
46:35 whats an .egg? egg is a predecceor for wheels, it contains metadata and source for editable installs.
48:10 from inportlib import metdata to see metadata on a project from an egg. gitignore egg files
49:35 summary

alexandarjelenic
Автор

This is a very informative and well done video. Thank you very much for making this content available.

SergioSousa
Автор

I watch like 15 min of this video on the moment and I can say it is one of the best tutorials that i saw in a while. The way how you slowly divide problem and show all the casess, and explain why and how it is happening is brillant

dawidp
Автор

I have been using a lot of it at work, but this video made me properly understand what and why i have been doing those things. really great stuff !

zvyenxs
Автор

What a brilliant tutorial. Makes what could be a complex topic simple and easy to understand.

julianhamann
Автор

I've been a huge fan of the Real Python blog for ages but this is the first video I've seen. Phenomenal video Ian and Geir! So clear, so thorough. I too had been contemplating doing the "simple" path hack, but I figured it's worth investing time in learning the proper way to do things, and this lesson did not disappoint. It has already saved me hours of headache. Cheers.

themichaelw
Автор

Just brilliant. The whole back and forth conversations, step by step build up. its a gem of tutorial for any python developer . i learned alot just by this video. Thank you for this great

farukhannan
Автор

This is really a good review of pyproject.toml. I really appreciate this calm, slow introduction to the subject. Too many tutorials rush through the topic quickly, but here the understanding is built up slowly.

jorgenlarsen
Автор

God bless you two! I have been struggling with this for a very long time. I am so happy that I found this video and so thankful that you two created this video and explained everything in such an awesome and understandable way.

Mraethn
Автор

this was a great tutorial. very great step-by-step explanations and intuitions.

kevon
Автор

Conversation Style of explaining the Topic is an awesome Idea at the first place. Thank You both of You

lord_consistent
Автор

Thank you for explaining the problem while also showing the solution.

Bigbackzack
Автор

Lol I've been having issues with this for a while and you guys explained it with just enough detail. Thank you

JorgeRamirez-vzgl
Автор

This is just the right balance of technology description and teaching! Amazing work.

ewgzhdy
Автор

I loved this one. All the basic questions I don't do were asked and answered with quality

rodrigocaballerohurtado
Автор

I was struggling with python to do packaging right now, but you helped me! Thank you! Amazing vide 🤘

andreikniazev
Автор

such a nice conversation and will not say a tutorial video but a tutorial should be like this.

qkrtphw
Автор

Excellent tutorial! I was getting tired of being frustrated with all the 'modules not found', 'no parent package found errors'.

tascsolutions
Автор

Finally a good explanation about packages! thank you!

justchary
Автор

Every question I had was asked and answered in 1 video. Thanks a lot!

Windeycastle