As you all may know pip is a python package manager and everyone has worked with it to install python libs.
Some of the commands with pip that you may not know about it:
- freeze: output installed packages in requirements format. (you can grep and search for a specific package):
        
    
- list: list installed packages:
        
    
- show: Show information about installed packages:
        
Important note for devops: pip by default install a stable version of the package. If you need to install an unstable version of the package (latest version) use
If you want to manage your custom python repository package versions (RC, Alpha, Beta, Stable, etc) add
The important part is
To see list of
https://pypi.python.org/pypi?%3Aaction=list_classifiers
Now you can give versioning like
To see different classifiers see the link
https://pypi.python.org/pypi/Django
#django #pip #pre_release #freeze #package #python #devops
  Some of the commands with pip that you may not know about it:
- freeze: output installed packages in requirements format. (you can grep and search for a specific package):
rply==0.7.4
rsa==3.2.3
sasl==0.2.1
scipy==0.13.0b1
- list: list installed packages:
tcpwatch (1.3.1)
telebot (0.0.3)
thrift (0.9.3)
- show: Show information about installed packages:
$ pip show pandas
Name: pandas
Version: 0.17.0
Summary: Powerful data structures for data analysis, time series,and statistics
Home-page: https://pandas.pydata.org
Author: The PyData Development Team
Author-email: [email protected]
License: BSD
Location: /Library/Python/2.7/site-packages
Requires: numpy, python-dateutil, pytz
Important note for devops: pip by default install a stable version of the package. If you need to install an unstable version of the package (latest version) use
--pre flag to install pre-release package.If you want to manage your custom python repository package versions (RC, Alpha, Beta, Stable, etc) add
classifiers to your setup.py script like below:setup(...,
classifiers=[
'Development Status :: 4 - Beta',
'Environment :: Console',
'Environment :: Web Environment',
'Intended Audience :: End Users/Desktop',
'Intended Audience :: Developers',
'Intended Audience :: System Administrators',
'License :: OSI Approved :: Python Software Foundation License',
'Operating System :: MacOS :: MacOS X',
'Operating System :: Microsoft :: Windows',
'Operating System :: POSIX',
'Programming Language :: Python',
'Topic :: Communications :: Email',
'Topic :: Office/Business',
'Topic :: Software Development :: Bug Tracking',
],
)
The important part is
Development Status :: 4 - Beta, which for stable release you would use Development Status :: 5 - Production/Stable.To see list of
pypi Development Status values read from the below link:https://pypi.python.org/pypi?%3Aaction=list_classifiers
Now you can give versioning like
Django 2.0b1 (for pre release) and Django 1.11.6 for stable release.To see different classifiers see the link
Django link below to learn more:https://pypi.python.org/pypi/Django
#django #pip #pre_release #freeze #package #python #devops
To install your python module you need a setup.py file inside of your project. The content of the setup.py can be something like below:
 
Now if you want to install it on your machine as a package just:
 
If you want to upload it into your python repository:
 
NOTE: you should be in the root of your project before running the previous command.
my_repo server should be declared inside of
 
If you want to install something from your repository via pip you have to provide the
 
NOTE: you can put inside of an ENV variable in OS to access it better and in more readable way.
#python #setuppy #setup #package #pypi #private_repo #pypirc #pip #install
  setup(name=PROJECT_NAME,
version=PROJECT_VERSION,
description=PROJECT_DESCRIPTION,
long_description=PROJECT_LONG_DESCRIPTION,
author='Ali',
author_email='[email protected]',
url='https://www.ali.com/',
license='SOMETHING',
entry_points=PROJECT_ENTRY_POINTS,
classifiers=[],
keywords='',
packages=find_packages(exclude=['ez_setup', 'examples', 'tests']),
include_package_data=True,
namespace_packages=[],
install_requires=['LIST', 'OF', 'REQUIREMENTS'],
zip_safe=False,
test_suite='nose.collector')
Now if you want to install it on your machine as a package just:
python setup.py install
If you want to upload it into your python repository:
python setup.py sdist upload -r my_repo
NOTE: you should be in the root of your project before running the previous command.
my_repo server should be declared inside of
~/.pypirc:[distutils]
index-servers =
my_repo
[my_repo]
repository: https://pypi.repo.my_host.com:5000
username: username
password: password
If you want to install something from your repository via pip you have to provide the
extra-index-url argument:--extra-index-url https://username:[email protected]_host.com:5000 --trusted-host pypi.repo.my_host.com
NOTE: you can put inside of an ENV variable in OS to access it better and in more readable way.
#python #setuppy #setup #package #pypi #private_repo #pypirc #pip #install
Preventing installation of 
 
In global mode (ie, with
By default, npm install will install all modules listed as dependencies in
With the
#node #npm #package_json #devDependencies #NODE_ENV
  devDependencies node modules:npm install in the package directory installs the dependencies in the local node_modules folder.In global mode (ie, with
-g or --global appended to the command), it installs the current package context (ie, the current working   directory) as a global package.By default, npm install will install all modules listed as dependencies in
package.json.With the
--production flag (or when the NODE_ENV environment variable is set to production`), `npm will not install modules        listed in devDependencies.#node #npm #package_json #devDependencies #NODE_ENV
In order to create a debian package from your shell script do as follow:
Let's consider our package name is
 
You can copy the files into your package with the full paths on the destination filesystem. E.g. if you want to put a file in
 
In your
 
 
Now build the package using
 
This creates a dangling.deb file, which you can now install on any Debian installation with following command:
 
#debian #deb #create #package #dpkg #build
  Let's consider our package name is
dangling. We need to create 2 folders, first is called dangling and the second is DEBIAN which is inside of the dangling folder:mkdir helloworld && mkdir helloworld/DEBIAN
You can copy the files into your package with the full paths on the destination filesystem. E.g. if you want to put a file in
/usr/local/bin/ you put it in dangling/usr/local/bin/:mkdir -p dangling/usr/local/bin
cp /usr/local/bin/dangling.sh dangling/usr/local/bin/
In your
DEBIAN directory (created at the begining of the post), create a control file with the below content:<span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; white-space: pre;">Package: dangling
</span><span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; white-space: pre;">Version: 0.1
</span><span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; white-space: pre;">Maintainer: Alireza Hoseini
</span><span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; white-space: pre;">Architecture: all
</span><span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; white-space: pre;">Description: would wipe all docker dangling volumes out
NOTE: These are the mandatory fields in the control file.Now build the package using
dpkg-deb:dpkg-deb --build dangling
This creates a dangling.deb file, which you can now install on any Debian installation with following command:
dpkg -i dangling.deb
#debian #deb #create #package #dpkg #build
Naming conventions and recipes related to packagingPrivate (including closed-source) projects use a namespace
For internal/customer projects, use your
company name as the namespace.This rule applies to closed-source projectsi (local PyPi server).
As an example, if you are creating a "climbing" project for the "Python Sport" company: use "pythonsport.climbing" name, even if it is closed source.
NOTE: The above descriptions are derived from python PEP-423.#python #package #packaging #pypi #pep423 #conflict
