Home Backend Development Python Tutorial How to install python egg

How to install python egg

Jul 05, 2019 am 09:20 AM
python

How to install python egg

Students who are often exposed to Python may notice that when they need to install a third-party python package, the easy_install command may be used. easy_install is a command included in the setuptools package developed by PEAK (Python Enterprise Application Kit). It is used to install the egg package. The egg package is currently the most popular way to package and deploy Python applications.

How to make and install egg package? I will briefly analyze it below.

1.1 Install setuptools

First, install the setuptools tool. You can directly use apt installation under Debian/Ubuntu: :

1

$ sudo apt-get install python-setuptools

Copy after login

If you install it manually, there are two ways:

Install through the boot program ez_setup.py. This boot program will download the latest version of setuptools from the Internet for installation, and can also update the local setuptools.

1

2

$ wget http://peak.telecommunity.com/dist/ez_setup.py

$ sudo python ez_setup.py

Copy after login

Update setuptools::

1

$ sudo python ez_setup.py -U setuptools

Copy after login

Or download the egg package of setuptools to install. The latest version download can be viewed here. After downloading, install it through sh.

1

2

$ wget http://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c11-py2.6.egg

$ sudo sh setuptools-0.6c11-py2.6.egg

Copy after login

Now you can use the easy_install command to install other egg packages.

1.2 Make your own egg package

I always install other people’s egg packages, do you also want to make your own egg package? Okay, next we will make a simple egg bag ourselves. First, create the project directory egg-demo and initialize a setup.py file:

1

2

3

4

5

$ mkdir egg-demo

$ cd egg-demo

$ touch setup.py

$ ls

setup.py

Copy after login

The following is mainly to fill in setup.py. setup.py is actually the configuration file of the python tool package distutils, and setuptools is based on distutils. Configure packaging information through the setup function in setup.py. First, we need to introduce the function setup of setuptools. The setup of setuptools is actually the setup function of distutils. Fill in setup.py with the following content:

1

2

3

4

5

$ cat setup.py

#!/usr/bin/env python

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

from setuptools import setup

setup()

Copy after login

At this point, an empty egg configuration file is written. We can use the following command to generate the egg package:

1

$ python setup.py bdist_egg

Copy after login

Let’s take a look at what is generated:

1

2

$ ls -F

build/ dist/ setup.py UNKNOWN.egg-info/

Copy after login

You can see three more folders. Under the dist folder, there is an egg file: UNKNOWN-0.0.0-py2.6.egg. Egg laying successful! Let’s first take a look at the format of this egg file:

1

2

$ file dist/UNKNOWN-0.0.0-py2.6.egg

dist/UNKNOWN-0.0.0-py2.6.egg: Zip archive data, at least v2.0 to extract

Copy after login

Oh, it turns out to be a zip compressed package! Okay, let’s take a look at the internal structure:

1

2

3

4

5

6

7

8

9

10

11

$ unzip -l dist/UNKNOWN-0.0.0-py2.6.egg

Archive:  dist/KNOWN-0.0.0-py2.6.egg

  Length      Date    Time    Name

---------  ---------- -----   ----

      120  2010-12-06 17:04   EGG-INFO/SOURCES.txt

        1  2010-12-06 17:04   EGG-INFO/top_level.txt

        1  2010-12-06 17:04   EGG-INFO/zip-safe

        1  2010-12-06 17:04   EGG-INFO/dependency_links.txt

      227  2010-12-06 17:04   EGG-INFO/PKG-INFO

---------                     -------

      350                     5 files

Copy after login

There is only one EGG-INFO folder, containing five egg information files, which is gone. The name of this egg is unknown, version 0.0.0. This is because we haven't set anything in the setup. Obviously, this egg can't do anything. Now add some ingredients to it. In setup.py, the setup function receives a series of properties as configuration parameters.

name name is the name of the egg package and the name of the folder to be packaged. The default is UNKNOWN.

version version number, default 0.0.0

packages Another function of setuptools, find_packages, is used here. As the name suggests, find_packages is used to package files in the specified directory.

zip_safe The default is False, so that the contents of the project file will be checked every time the egg package is generated to ensure that it is correct.

There are also some descriptive attributes, such as description, long_description, author, author_email, license, keywords, platform, url, etc. Fill in the setup.py file as follows: :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

$ cat setup.py

#!/usr/bin/env python

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

from setuptools import setup, find_packages

setup(

        name = "demo",

        version="0.1.0",

        packages = find_packages(),

        zip_safe = False,

        description = "egg test demo.",

        long_description = "egg test demo, haha.",

        author = "amoblin",

        author_email = "amoblin@ossxp.com",

        license = "GPL",

        keywords = ("test", "egg"),

        platforms = "Independant",

        url = "",

        )

Copy after login

Create a directory demo with the same name as the above name in the egg-demo directory, and write the __init__.py file in the demo directory:

1

2

3

4

5

6

7

8

$ mkdir demo

$ cat demo/__init__.py

#!/usr/bin/env python

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

def test():

    print "Hello, I'm amoblin."

if __name__ == '__main__':

    test()

Copy after login

Generate again After the egg package, check the egg package information:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

$ python setup.py bdist_egg

$ unzip -l dist/demo-0.1.0-py2.6.egg

Archive:  dist/demo-0.1.0-py2.6.egg

  Length      Date    Time    Name

---------  ---------- -----   ----

      121  2010-12-06 17:30   demo/__init__.py

      344  2010-12-06 17:46   demo/__init__.pyc

      137  2010-12-06 17:46   EGG-INFO/SOURCES.txt

        5  2010-12-06 17:46   EGG-INFO/top_level.txt

        1  2010-12-06 17:46   EGG-INFO/zip-safe

        1  2010-12-06 17:46   EGG-INFO/dependency_links.txt

      227  2010-12-06 17:46   EGG-INFO/PKG-INFO

---------                     -------

      836                     7 files

Copy after login

You can see that there is an additional folder demo, which contains the __init__.py we wrote. Adhering to the agile principle, install it first and experience it before saying:

1

2

3

4

5

6

7

8

9

10

$ sudo python setup.py install

running install

install_dir /usr/local/lib/python2.6/dist-packages/

...

creating /usr/local/lib/python2.6/dist-packages/demo-0.1.0-py2.6.egg

Extracting demo-0.1.0-py2.6.egg to /usr/local/lib/python2.6/dist-packages

demo 0.1.0 is already the active version in easy-install.pth

Installed /usr/local/lib/python2.6/dist-packages/demo-0.1.0-py2.6.egg

Processing dependencies for demo==0.1.0

Finished processing dependencies for demo==0.1.0

Copy after login

OK! Installation completed! Next we can use it directly through import!

1

2

$ python -c "from demo import test;test()"

Hello, I'm amoblin.

Copy after login

Successful output! This means the installation is correct. One of our egg bags was born. Normally, our source programs are placed in the src directory, so next we move the demo folder to src. But this also requires modifying the setup.py file, modifying the parameter in the find_packages function to 'src', and adding the package_dir parameter:

1

2

packages=find_packages('src'),

package_dir = {'':'src'}

Copy after login

This tells setuptools to look for packages in the src directory instead of the original default project root directory. .

1.3 Egg file uninstallation

Taking the python2.6 version as an example, the egg file is generally installed in the /usr/local/lib/python2.6/dist-packages/ directory. There is also an easy-install.pth file used to store the installed egg information. :

1

2

3

4

5

$ cd /usr/local/lib/python2.6/dist-packages

$ cat easy-install.pth|grep demo

./demo-0.1.0-py2.6.egg

$ ls -F|grep demo

demo-0.1.0-py2.6.egg/

Copy after login

Uninstalling the egg file is very simple, first delete the line containing this egg from easy-install.pth, and then delete the egg folder.

Related recommendations: "Python Tutorial"

The above is the detailed content of How to install python egg. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

What is the function of C language sum? What is the function of C language sum? Apr 03, 2025 pm 02:21 PM

There is no built-in sum function in C language, so it needs to be written by yourself. Sum can be achieved by traversing the array and accumulating elements: Loop version: Sum is calculated using for loop and array length. Pointer version: Use pointers to point to array elements, and efficient summing is achieved through self-increment pointers. Dynamically allocate array version: Dynamically allocate arrays and manage memory yourself, ensuring that allocated memory is freed to prevent memory leaks.

Who gets paid more Python or JavaScript? Who gets paid more Python or JavaScript? Apr 04, 2025 am 12:09 AM

There is no absolute salary for Python and JavaScript developers, depending on skills and industry needs. 1. Python may be paid more in data science and machine learning. 2. JavaScript has great demand in front-end and full-stack development, and its salary is also considerable. 3. Influencing factors include experience, geographical location, company size and specific skills.

Is distinctIdistinguish related? Is distinctIdistinguish related? Apr 03, 2025 pm 10:30 PM

Although distinct and distinct are related to distinction, they are used differently: distinct (adjective) describes the uniqueness of things themselves and is used to emphasize differences between things; distinct (verb) represents the distinction behavior or ability, and is used to describe the discrimination process. In programming, distinct is often used to represent the uniqueness of elements in a collection, such as deduplication operations; distinct is reflected in the design of algorithms or functions, such as distinguishing odd and even numbers. When optimizing, the distinct operation should select the appropriate algorithm and data structure, while the distinct operation should optimize the distinction between logical efficiency and pay attention to writing clear and readable code.

How to understand !x in C? How to understand !x in C? Apr 03, 2025 pm 02:33 PM

!x Understanding !x is a logical non-operator in C language. It booleans the value of x, that is, true changes to false, false changes to true. But be aware that truth and falsehood in C are represented by numerical values ​​rather than boolean types, non-zero is regarded as true, and only 0 is regarded as false. Therefore, !x deals with negative numbers the same as positive numbers and is considered true.

Can C language user identifiers contain spaces? Can C language user identifiers contain spaces? Apr 03, 2025 pm 01:51 PM

C language identifiers cannot contain spaces because they can cause confusion and difficulty in maintaining. The specific rules are as follows: they must start with letters or underscores. Can contain letters, numbers, or underscores. Cannot contain illegal characters (such as special symbols).

What does sum mean in C language? What does sum mean in C language? Apr 03, 2025 pm 02:36 PM

There is no built-in sum function in C for sum, but it can be implemented by: using a loop to accumulate elements one by one; using a pointer to access and accumulate elements one by one; for large data volumes, consider parallel calculations.

How to apply snake nomenclature in C language? How to apply snake nomenclature in C language? Apr 03, 2025 pm 01:03 PM

In C language, snake nomenclature is a coding style convention, which uses underscores to connect multiple words to form variable names or function names to enhance readability. Although it won't affect compilation and operation, lengthy naming, IDE support issues, and historical baggage need to be considered.

Does H5 page production require continuous maintenance? Does H5 page production require continuous maintenance? Apr 05, 2025 pm 11:27 PM

The H5 page needs to be maintained continuously, because of factors such as code vulnerabilities, browser compatibility, performance optimization, security updates and user experience improvements. Effective maintenance methods include establishing a complete testing system, using version control tools, regularly monitoring page performance, collecting user feedback and formulating maintenance plans.

See all articles