Git Product home page Git Product logo

pypack's Introduction

pypack

makes PYthon environment PACKageable.

By running pypack.py or pypack.sh, you can get a locatable to anywhere python environment tar.gz file. You can control which kind python environment you want by customize your config file.

BTW, don't worry this will mess your current directory up, since all files and all operations will be handled or executed under build.path defined by config file.

Using Scenarios

  • Needs a customized python runtime for pyspark job on yarn cluster.
  • Needs a specific python runtime on a server without a sudo account.
  • Builds an unified python runtime both for offline/online/ environment, one-time's packaging, multi-scenarios' using.
  • Builds a pre-built python runtime to avoid packaging process when launching a python program.
  • Avoid some weird issues/bugs when using python -m venv, for example, try:
python3 -venv ./pyenv --copies
source ./pyenv/bin/activate   
pip install gdown

Requirements

  • unix-like system
  • docker with sudo authority
  • python with version higher than 3.0

How to Run?

Using demo config file and requirements.txt file located at ./demo_conf as example, run

python pypack.py --conf_path ./demo_conf/pypack_centos.json
# or
python pypack.py --conf_path ./demo_conf/pypack_ubuntu.json

After execution, the last line of logs will tell you where to get your python-env tar.gz file.

If you do not want git clone the responsitory, you can just run

curl -s https://raw.githubusercontent.com/innerNULL/pypack/main/pypack.sh | bash /dev/stdin path/to/config.json
# or (in China Mainland)
wget -qO - https://ghproxy.com/https://raw.githubusercontent.com/innerNULL/pypack/main/pypack.sh | bash /dev/stdin path/to/config.json

Define Project Python-Env Building Process with Makefile

Refer to ./example, just run make.

Config File

  • miniconda_url: miniconda url used to download miniconda installer.
  • use_sudo: If using sudo to run docker or some other operations on local, in model case you should set this to "0", which means not use.
  • docker:
    • base_img: Base image (and its tag) used to package python-building image.
    • build_img: The name of the images build on base_img for python environment building.
    • container: Container's name when running build_img.
  • python:
    • version: Target python environment version.
    • env_name: Target python environment name.
    • dep: Target python environment's dependencies packages, which is, requirement.txt path. Note, no matter you use pack.py or pypack.sh, this path should be an absolute path or a relative path refer to your current path (the path you execute packaging command).
    • post_running: The command should be executed after pip install.
  • build:
    • path: The directroy under which to execute building target python environment. This should be a new path.
    • pre_running: The commands should be executed before docker-building stage, usually includes specific file/data movement process.

Pre/Post Running Mechanism

In pypack config, there is a post-running mechanism after python modules have been installed, and a pre-running mechanism before python runtime packaging process. Using pypack_ubuntu.json and requirements.txt as exmaple:

  • post_running: Since after we packaging python-env which contains spacy, we also hope download spacy-zh-dependencies before packaging python-env to tar.gz, but this should be executed with python-cmd, so we can just add shell command lines in post_running.
  • pre_running: Similiar with post_running, but this is used to do some preparation before all python-packaging process, for example, here we clone the ultipledispatch into build.path, so in requirements.txt we can install this module from local directory.

Tips

  • Make sure your computer/server has enough resource (such as disk-space), since if not, conda/pip will raise hard-understanding error info.

pypack's People

Contributors

innernull avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.