setup.py入门

作者: JinMoon | 来源:发表于2018-06-17 19:48 被阅读27次

    记录安装路径

    增加 –record 参数重新安装软件包,执行命令:
    python ./setup.py install --record install.txt

    根据记录的安装路径删除

    删除安装文件,执行命令:
    cat install.txt | xargs rm -rf

    开发者模式

    python setup.py --help develop
    
    Options for 'develop' command:
      --prefix                   installation prefix
      --zip-ok (-z)              install package as a zipfile
      --multi-version (-m)       make apps have to require() a version
      --upgrade (-U)             force upgrade (searches PyPI for latest versions)
      --install-dir (-d)         install package to DIR
      --script-dir (-s)          install scripts to DIR
      --exclude-scripts (-x)     Don't install scripts
      --always-copy (-a)         Copy all needed packages to install dir
      --index-url (-i)           base URL of Python Package Index
      --find-links (-f)          additional URL(s) to search for packages
      --build-directory (-b)     download/extract/build in DIR; keep the results
      --optimize (-O)            also compile with optimization: -O1 for "python -
                                 O", -O2 for "python -OO", and -O0 to disable
                                 [default: -O0]
      --record                   filename in which to record list of installed
                                 files
      --always-unzip (-Z)        don't install as a zipfile, no matter what
      --site-dirs (-S)           list of directories where .pth files work
      --editable (-e)            Install specified packages in editable form
      --no-deps (-N)             don't install dependencies
      --allow-hosts (-H)         pattern(s) that hostnames must match
      --local-snapshots-ok (-l)  allow building eggs from local checkouts
      --version                  print version information and exit
      --no-find-links            Don't load find-links defined in packages being
                                 installed
      --user                     install in user site-package
                                 '/home/blastbao/.local/lib/python2.7/site-
                                 packages'
      --uninstall (-u)           Uninstall this source package
      --egg-path                 Set the path to be used in the .egg-link file
    

    使用命令:

    [root@localhost section01]# python setup.py develop --record  install.txt
    running develop
    running egg_info
    creating UNKNOWN.egg-info
    writing UNKNOWN.egg-info/PKG-INFO
    writing top-level names to UNKNOWN.egg-info/top_level.txt
    writing dependency_links to UNKNOWN.egg-info/dependency_links.txt
    writing manifest file 'UNKNOWN.egg-info/SOURCES.txt'
    reading manifest file 'UNKNOWN.egg-info/SOURCES.txt'
    writing manifest file 'UNKNOWN.egg-info/SOURCES.txt'
    running build_ext
    copying build/lib.linux-x86_64-2.7/lc_hello_world.so -> 
    Creating /usr/lib64/python2.7/site-packages/UNKNOWN.egg-link (link to .)
    Adding UNKNOWN 0.0.0 to easy-install.pth file
    
    Installed /home/blastbao/workSpace/python/python-c-extension-sample/src/section01
    Processing dependencies for UNKNOWN==0.0.0
    Finished processing dependencies for UNKNOWN==0.0.0
    

    正式安装

    [blastbao@localhost section02]$ python setup.py install
    running install
    running bdist_egg
    running egg_info
    writing UNKNOWN.egg-info/PKG-INFO
    writing top-level names to UNKNOWN.egg-info/top_level.txt
    writing dependency_links to UNKNOWN.egg-info/dependency_links.txt
    reading manifest file 'UNKNOWN.egg-info/SOURCES.txt'
    writing manifest file 'UNKNOWN.egg-info/SOURCES.txt'
    installing library code to build/bdist.linux-x86_64/egg
    running install_lib
    running build_ext
    creating build/bdist.linux-x86_64
    creating build/bdist.linux-x86_64/egg
    copying build/lib.linux-x86_64-2.7/lc_hello_world.so -> build/bdist.linux-x86_64/egg
    creating stub loader for lc_hello_world.so
    byte-compiling build/bdist.linux-x86_64/egg/lc_hello_world.py to lc_hello_world.pyc
    creating build/bdist.linux-x86_64/egg/EGG-INFO
    copying UNKNOWN.egg-info/PKG-INFO -> build/bdist.linux-x86_64/egg/EGG-INFO
    copying UNKNOWN.egg-info/SOURCES.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
    copying UNKNOWN.egg-info/dependency_links.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
    copying UNKNOWN.egg-info/top_level.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
    writing build/bdist.linux-x86_64/egg/EGG-INFO/native_libs.txt
    zip_safe flag not set; analyzing archive contents...
    creating 'dist/UNKNOWN-0.0.0-py2.7-linux-x86_64.egg' and adding 'build/bdist.linux-x86_64/egg' to it
    removing 'build/bdist.linux-x86_64/egg' (and everything under it)
    Processing UNKNOWN-0.0.0-py2.7-linux-x86_64.egg
    Removing /usr/lib64/python2.7/site-packages/UNKNOWN-0.0.0-py2.7-linux-x86_64.egg
    Copying UNKNOWN-0.0.0-py2.7-linux-x86_64.egg to /usr/lib64/python2.7/site-packages
    UNKNOWN 0.0.0 is already the active version in easy-install.pth
    
    Installed /usr/lib64/python2.7/site-packages/UNKNOWN-0.0.0-py2.7-linux-x86_64.egg
    

    --record install.txt选项,使安装包信息记录到文件中,文件内容:

    /usr/lib64/python2.7/site-packages/UNKNOWN-0.0.0-py2.7-linux-x86_64.egg
    

    总结:

    setup会
    (1)编译c/c++文件成.so文件
    (2)编译py文件成py文件
    (3)生成元信息
    (4)将上述文件打包成egg格式,然后拷贝到/usr/lib64/python2.7/site-packages/路径中
    (5)相应安装包的信息记录在--record指定的文本文件中。

    相关文章

      网友评论

        本文标题:setup.py入门

        本文链接:https://www.haomeiwen.com/subject/zvaweftx.html