Python package management

2016-07-08  本文已影响192人  abrocod

A standard Python environment directory structure (created by Anaconda)

# base python
/anaconda/

# user created environment
/anaconda/env/

Each python environment follow the similar structure (including anaconda's base one)

PATH/bin
    (include executable binary, like conda, pip, python_intepreter, etc)
PATH/lib
    /python_{version_number}
        /site-package (both conda and pip will install packages to this directory)


Anaconda

Create/change environment

Create environment

conda create --name snowflakes pandas
conda create --name bunnies python=3 astroid babel

create Python 3 environment

$ conda create -n py35 python=3.5 anaconda
$ source activate py35
$ source deactivate

Here, the ‘py35’ is the name of the environment you want to create, and ‘anaconda’ is the meta-package that includes all of the actual Python packages comprising the Anaconda distribution. When creating a new environment and installing Anaconda, you can specify the exact package and Python versions, for example, numpy=1.7 or python=3.5.

Create Python 2 environment

$ conda create -n py27 python=2.7 anaconda
$ source activate py27
$ source deactivate

TIP: Install all the programs you will want in this environment at the same time. Installing one program at a time can lead to dependency conflicts.

Switch environment

source activate snowflakes

List all environments

conda info --envs
conda env list

Clone environment

conda create --name flowers --clone snowflakes

Remove environment

conda remove --name flowers --all

Export environment file and create env from environment file

First switch to the environment you want to export, then:

conda env export > environment.yml
conda env create -f environment.yml


Find system's python package directory:

>>> import site; site.getsitepackages()
['/usr/lib64/python2.7/site-packages', '/usr/lib/python2.7/site-packages', '/usr/lib/site-python']

/usr/lib/python2.7/site-packages seems to be important ?

if I using sudo pip install virtualenv it will install virtualenv package into /usr/bin


Use pip to manage environment

Check package information (including the installed location)

pip show pandas

pip install -U pip setuptools

Normal Install or update a package

To install the latest version of “SomeProject”:

pip install SomeProject

To install a specific version:

pip install SomeProject==1.4

To install greater than or equal to one version and less than another:

pip install SomeProject>=1,<2

To install a version that’s “compatible” with a certain version: [4]

pip install SomeProject~=1.4.2

In this case, this means to install any version “==1.4.*” version that’s also “>=1.4.2”.

To update a package:

pip install -U SomePackage
pip install --upgrade SomeProject

Source Distributions vs Wheels

Use pip with proxy setting

pip install --proxy user:pass@proxy:port works
pip search --proxy user:pass@proxy:port dont work

Installing to the User Site

To install packages that are isolated to the current user, use the --user flag:

pip install --user SomeProject

Requirements files

Install a list of requirements specified in a Requirements File.

pip install -r requirements.txt

Installing from a local src tree

Installing from local src in Development Mode, i.e. in such a way that the project appears to be installed, but yet is still editable from the src tree.

pip install -e <path>

You can also install normally from src

pip install <path>

Installing from local archives

Install a particular source archive file.

pip install ./downloads/SomeProject-1.0.4.tar.gz

Install from a local directory containing archives (and don’t check PyPI)

pip install --no-index --find-links=file:///local/dir/ SomeProject
pip install --no-index --find-links=/local/dir/ SomeProject
pip install --no-index --find-links=relative/dir/ SomeProject


virtualenv

$ virtualenv --no-site-packages env_name
source env_name/bin/activate


Python Packaging Ecosystem

>>> import sys
>>> sys.path
['',   # the current directory, represented by a null string
 '/usr/local/lib/python2.6',
 '/usr/local/lib/python2.6/site-packages',
 ...]
>>> import mypackage  # this package is at current directory
>>> mypackage.__file__
'mypackage/__init__.py'

python directory structure

Linux

use default python

'/usr/lib/python2.7/site-packages', '/usr/lib/site-python'

use anaconda
use virtualenv

Mac

use default python
use anaconda
use virtualenv

Python Package

How to create Python Package (not very useful)

This is better : https://packaging.python.org/distributing/


Install Package

https://packaging.python.org/installing/

It’s important to note that the term “package” in this context is being used as a synonym for a distribution (i.e. a bundle of software to be installed), not to refer to the kind of package that you import in your Python source code (i.e. a container of modules). It is common in the Python community to refer to a distribution using the term “package”. Using the term “distribution” is often not preferred, because it can easily be confused with a Linux distribution, or another larger software distribution like Python itself.


How to create Python Package

上一篇下一篇

猜你喜欢

热点阅读