search

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: :

$ sudo apt-get install python-setuptools

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.

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

Update setuptools::

$ sudo python ez_setup.py -U setuptools

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

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

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:

$ mkdir egg-demo
$ cd egg-demo
$ touch setup.py
$ ls
setup.py

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:

$ cat setup.py
#!/usr/bin/env python
#-*- coding:utf-8 -*-
from setuptools import setup
setup()

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

$ python setup.py bdist_egg

Let’s take a look at what is generated:

$ ls -F
build/ dist/ setup.py UNKNOWN.egg-info/

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:

$ 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

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

$ 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

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: :

$ 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 = "",
        )

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:

$ mkdir demo
$ cat demo/__init__.py
#!/usr/bin/env python
#-*- coding:utf-8 -*-
def test():
    print "Hello, I'm amoblin."
if __name__ == '__main__':
    test()

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

$ 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

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:

$ 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

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

$ python -c "from demo import test;test()"
Hello, I'm amoblin.

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:

packages=find_packages('src'),
package_dir = {'':'src'}

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. :

$ 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/

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
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
Python's Execution Model: Compiled, Interpreted, or Both?Python's Execution Model: Compiled, Interpreted, or Both?May 10, 2025 am 12:04 AM

Pythonisbothcompiledandinterpreted.WhenyourunaPythonscript,itisfirstcompiledintobytecode,whichisthenexecutedbythePythonVirtualMachine(PVM).Thishybridapproachallowsforplatform-independentcodebutcanbeslowerthannativemachinecodeexecution.

Is Python executed line by line?Is Python executed line by line?May 10, 2025 am 12:03 AM

Python is not strictly line-by-line execution, but is optimized and conditional execution based on the interpreter mechanism. The interpreter converts the code to bytecode, executed by the PVM, and may precompile constant expressions or optimize loops. Understanding these mechanisms helps optimize code and improve efficiency.

What are the alternatives to concatenate two lists in Python?What are the alternatives to concatenate two lists in Python?May 09, 2025 am 12:16 AM

There are many methods to connect two lists in Python: 1. Use operators, which are simple but inefficient in large lists; 2. Use extend method, which is efficient but will modify the original list; 3. Use the = operator, which is both efficient and readable; 4. Use itertools.chain function, which is memory efficient but requires additional import; 5. Use list parsing, which is elegant but may be too complex. The selection method should be based on the code context and requirements.

Python: Efficient Ways to Merge Two ListsPython: Efficient Ways to Merge Two ListsMay 09, 2025 am 12:15 AM

There are many ways to merge Python lists: 1. Use operators, which are simple but not memory efficient for large lists; 2. Use extend method, which is efficient but will modify the original list; 3. Use itertools.chain, which is suitable for large data sets; 4. Use * operator, merge small to medium-sized lists in one line of code; 5. Use numpy.concatenate, which is suitable for large data sets and scenarios with high performance requirements; 6. Use append method, which is suitable for small lists but is inefficient. When selecting a method, you need to consider the list size and application scenarios.

Compiled vs Interpreted Languages: pros and consCompiled vs Interpreted Languages: pros and consMay 09, 2025 am 12:06 AM

Compiledlanguagesofferspeedandsecurity,whileinterpretedlanguagesprovideeaseofuseandportability.1)CompiledlanguageslikeC arefasterandsecurebuthavelongerdevelopmentcyclesandplatformdependency.2)InterpretedlanguageslikePythonareeasiertouseandmoreportab

Python: For and While Loops, the most complete guidePython: For and While Loops, the most complete guideMay 09, 2025 am 12:05 AM

In Python, a for loop is used to traverse iterable objects, and a while loop is used to perform operations repeatedly when the condition is satisfied. 1) For loop example: traverse the list and print the elements. 2) While loop example: guess the number game until you guess it right. Mastering cycle principles and optimization techniques can improve code efficiency and reliability.

Python concatenate lists into a stringPython concatenate lists into a stringMay 09, 2025 am 12:02 AM

To concatenate a list into a string, using the join() method in Python is the best choice. 1) Use the join() method to concatenate the list elements into a string, such as ''.join(my_list). 2) For a list containing numbers, convert map(str, numbers) into a string before concatenating. 3) You can use generator expressions for complex formatting, such as ','.join(f'({fruit})'forfruitinfruits). 4) When processing mixed data types, use map(str, mixed_list) to ensure that all elements can be converted into strings. 5) For large lists, use ''.join(large_li

Python's Hybrid Approach: Compilation and Interpretation CombinedPython's Hybrid Approach: Compilation and Interpretation CombinedMay 08, 2025 am 12:16 AM

Pythonusesahybridapproach,combiningcompilationtobytecodeandinterpretation.1)Codeiscompiledtoplatform-independentbytecode.2)BytecodeisinterpretedbythePythonVirtualMachine,enhancingefficiencyandportability.

See all articles

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

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft

DVWA

DVWA

Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

Atom editor mac version download

Atom editor mac version download

The most popular open source editor

SublimeText3 English version

SublimeText3 English version

Recommended: Win version, supports code prompts!

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor