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!

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

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.

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.

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.

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

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.

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

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


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

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

Hot Article

Hot Tools

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft

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
The most popular open source editor

SublimeText3 English version
Recommended: Win version, supports code prompts!

Notepad++7.3.1
Easy-to-use and free code editor
