目次
setup.py" > setup.py
四、安装模块" >四、安装模块
hello_module-1.0.tar.gz は、生成された Python モジュールです。 Python 仮想環境に切り替えて、モジュールをインストールします。 " > hello_module-1.0.tar.gz は、生成された Python モジュールです。 Python 仮想環境に切り替えて、モジュールをインストールします。
ホームページ バックエンド開発 Python チュートリアル Python パッケージング ツール distutils と setuptools の簡単な分析

Python パッケージング ツール distutils と setuptools の簡単な分析

Apr 20, 2018 pm 02:16 PM
python 道具

Python パッケージは開発において非常に一般的であり、一般的な使用手順は、すべての機能を備えた Python モジュール パッケージを作成し、モジュールをパッケージ化して公開し、インストールして使用することです。この記事では、Python パッケージング ツール distutils と setuptools の関連知識を紹介します。興味のある方は、ぜひ一緒にご覧ください: Python でパッケージをインストールする方法はたくさんあります:

    ソース パッケージ: python setup.py install
  1. オンラインインストール: pip install パッケージ名 (linux) / easy_install パッケージ名 (window)
  2. Python パッケージは開発において非常に一般的で、すべての機能を備えた Python モジュール パッケージを作成し、そのモジュールをパッケージ化します。をクリックしてから、公開、インストール、使用します。パッケージのパッケージ化とインストールは、最も一般的なタスクです。勉強中に、distutils と setuptools という 2 つのパッケージ化されたツールに出会い、勉強した後にメモを取りました。

distutilsdistutils は Python 標準ライブラリの一部です。このライブラリの目的は、開発者に便利なパッケージ化方法とユーザーに便利なインストール方法を提供することです。独自のモジュールを開発した後、distutils の setup.py パッケージを使用します。

1. Python

hello.py

def hello_fun():
 print "i say hello to you"
ログイン後にコピー


2. setup.pyファイルを作成します

setup.py

from distutils.core import setup
setup(
 name="hello_module",
 version="1.0",
 author="ljk",
 author_email="wilber@sh.com",
 py_modules=['hello'],
)
ログイン後にコピー



3. パッケージ化コマンドを実行します

<img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/153/291/c9ec895b33001f9a73ccf3328f67de41-1.png" class="lazy" alt= ""/>

カレントディレクトリにdistフォルダが自動生成されていることを再度確認してください。フォルダ内に対象ファイルである圧縮パッケージが存在します。記録ファイル MANIFEST もあります。

<img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/153/291/c9ec895b33001f9a73ccf3328f67de41-1.png" class="lazy" alt=""/>

再次查看当前目录下自动生成了一个文件夹dist,文件夹中有一个压缩包即为我们的目标文件。另外有一个记录文件MANIFEST。

四、安装模块

hello_module-1.0.tar.gz 是生成的python模块。切换到的我的python虚拟环境中,安装该模块。

使用python setup.py install

4. モジュールをインストールします

hello_module-1.0.tar.gz は、生成された Python モジュールです。 Python 仮想環境に切り替えて、モジュールをインストールします。

python setup.py install を使用してモジュールをインストールします。パスからもわかるように、モジュールは標準ライブラリの指定されたパスにインストールされます。

5. モジュールの使用

モジュールをインストールした後、Python 対話環境にモジュールをインポートします。モジュールは hello.py ファイルで、hello.py ファイル内の hello_fun() 関数を参照します。

setuptools

setuptoolsは、distutilsの拡張バージョンです。 setuptools には、Linux で特定のサービスを開始するのと同じように、非常に便利なentry_points 関数があります。たとえば、Firefox では Linux のコマンド ラインで Firefox ブラウザを起動できます。

インストールする前に、まずコマンドパスに影響がないことを確認してください。


1. 関数パッケージを作成します

フォルダーデモを作成し、フォルダー内に get_path.py と __init__.py の 2 つのファイルを作成します。 get_path.py は関数関数、__init__.py はパッケージの識別ファイルです。

get_path.py

import os
def fun():
 print "i am in the path:"
 print os.getcwd()
ログイン後にコピー


2. setup.py ファイルを設定します

setup.py ファイルを作成し、必要なパッケージ情報を入力します。 setup.py

#-*- encoding: UTF-8 -*-
from setuptools import setup
setup(
 name = "demo",    # 包名
 version = "0.1",    # 版本信息
 packages = [&#39;demo&#39;],   # 要打包的项目文件夹
 include_package_data=True, # 自动打包文件夹内所有数据
 zip_safe=True,    # 设定项目包为安全,不用每次都检测其安全性
 install_requires = [   # 安装依赖的其他包(测试数据)
 &#39;docutils>=0.3&#39;,
 &#39;requests&#39;,
 ],
 # 设置程序的入口为path
 # 安装后,命令行执行path相当于调用get_path.py中的fun方法
 entry_points={
  &#39;console_scripts&#39;:[
   &#39;path = demo.get_path:fun&#39;
          ]
 },
)
<br data-filtered="filtered"><br data-filtered="filtered">
ログイン後にコピー

このモジュールに必要なすべての依存関係を構成に書き込み、インストール中にダウンロードするアドレスを指定します。この方法を使用すると、インストール プロセスが簡素化されますが、十分ではありません。最良の方法は、pip の自動ダウンロードを使用することです。 🎜🎜🎜🎜3. パッケージ化🎜🎜🎜🎜🎜🎜🎜 🎜🎜 パッケージ化後、demo.egg-info と dist という 2 つのフォルダーが追加されます。 demo.egg-info はインストールに必要な情報で、dist 内の圧縮パッケージがインストール パッケージです。 🎜

查看dist/demo-0.1.tar.gz解压之后的文件。

四、安装包

五、使用包

安装之后在命令行中直接输入path,回车能够看到调用了get_path.py中的函数fun(),输出字符串。

同时也可以导入使用。

setuptools的进阶使用

上面使用setuptools时只是简单的用一个配置文件setup.py就完成了打包信息填写。在真实的开发环境中,往往是多个文件配合。以openstack的打包为例。openstack中引入了Pbr的管理工具。

pbr是setuptools的辅助工具,最初为openstack开发,基于d2to1。Pbr会读取和过滤setup.cfg中的内容,然后将解析后的数据提供给setup.py作为参数。

setup.cfg提供setup.py的默认参数,同时易于修改。Setup.py先解析setup.cfg文件,然后执行相关命令。包括以下功能:

1、从git中获取Version,AUTHORS和ChangeLog信息

2、SphinxAutodoc。pbr会扫描project,找到所有模块,生成stubfiles

3、Requirements。读取requirements.txt文件,生成setup函数需要依赖包

4、long_description。从README.rst、README.txt或者READMEfile中生成long_description参数

Pbr的文件很简单,如下。配置之后会自动寻找目录下的setup.cfg文件,解析文件参数给setup.py使用。

setup.py


from setuptools import setup
setuptools.setup(
setup_requires=[&#39;pbr&#39;],
pbr=True)
setup.cfg

[metadata]
name= keystone
version= 2015.2
summary= OpenStack Identity
description-file=
README.rst
author= OpenStack
author-email= openstack-dev@lists.openstack.org
home-page= http://www.openstack.org/
classifier=
Environment:: OpenStack
IntendedAudience :: Information Technology
IntendedAudience :: System Administrators
License:: OSI Approved :: Apache Software License
OperatingSystem :: POSIX :: Linux
ProgrammingLanguage :: Python
ProgrammingLanguage :: Python :: 2
ProgrammingLanguage :: Python :: 2.7
[files]
packages=
keystone
[global]
setup-hooks=
pbr.hooks.setup_hook
[egg_info]
tag_build=
tag_date= 0
tag_svn_revision= 0
[build_sphinx]
all_files= 1
build-dir= doc/build
source-dir= doc/source
[compile_catalog]
directory= keystone/locale
domain= keystone
ログイン後にコピー




以上がPython パッケージング ツール distutils と setuptools の簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

DebianでMongodbの高可用性を確保する方法 DebianでMongodbの高可用性を確保する方法 Apr 02, 2025 am 07:21 AM

この記事では、Debianシステムで非常に利用可能なMongoDBデータベースを構築する方法について説明します。データのセキュリティとサービスが引き続き動作し続けるようにするための複数の方法を探ります。キー戦略:レプリカセット:レプリカセット:レプリカセットを使用して、データの冗長性と自動フェールオーバーを実現します。マスターノードが失敗すると、レプリカセットが自動的に新しいマスターノードを選択して、サービスの継続的な可用性を確保します。データのバックアップと回復:MongoDumpコマンドを定期的に使用してデータベースをバックアップし、データ損失のリスクに対処するために効果的な回復戦略を策定します。監視とアラーム:監視ツール(プロメテウス、グラファナなど)を展開して、MongoDBの実行ステータスをリアルタイムで監視し、

Debianの下のPostgreSQL監視方法 Debianの下のPostgreSQL監視方法 Apr 02, 2025 am 07:27 AM

この記事では、Debianシステムの下でPostgreSQLデータベースを監視するためのさまざまな方法とツールを紹介し、データベースのパフォーマンス監視を完全に把握するのに役立ちます。 1. PostgreSQLを使用して監視を監視す​​るビューPostgreSQL自体は、データベースアクティビティを監視するための複数のビューを提供します。 PG_STAT_REPLICATION:特にストリームレプリケーションクラスターに適した複製ステータスを監視します。 PG_STAT_DATABASE:データベースサイズ、トランザクションコミット/ロールバック時間、その他のキーインジケーターなどのデータベース統計を提供します。 2。ログ分析ツールPGBADGを使用します

Pythonでのカスタムデコレータのパイランスタイプ検出の問題を解決する方法は? Pythonでのカスタムデコレータのパイランスタイプ検出の問題を解決する方法は? Apr 02, 2025 am 06:42 AM

Pythonプログラミングでカスタムデコレーターを使用する場合、Pylance Type検出問題解決策デコレーターは、行を追加するために使用できる強力なツールです...

Debianで動物園のパフォーマンスチューニングを操作する方法 Debianで動物園のパフォーマンスチューニングを操作する方法 Apr 02, 2025 am 07:42 AM

この記事では、Debian SystemsのZookeeperパフォーマンスを最適化する方法について説明します。ハードウェア、オペレーティングシステム、Zookeeperの構成、監視に関するアドバイスを提供します。 1.システムレベルでのストレージメディアのアップグレードの最適化:従来の機械的ハードドライブをSSDソリッドステートドライブに置き換えると、I/Oパフォーマンスが大幅に向上し、アクセス待ち時間が減少します。スワップパーティションの無効化:カーネルパラメーターを調整し、スワップパーティションへの依存を減らし、頻繁なメモリとディスクスワップに起因するパフォーマンスの損失を回避します。ファイル記述子の上限を改善する:Zookeeperの処理効率に影響を与えるリソース制限を回避するために、システムによって同時に許可されるファイル記述子の数を増やします。 2. Zookeeper構成最適化Zoo.CFGファイルの構成

DebianでOracleセキュリティ設定を行う方法 DebianでOracleセキュリティ設定を行う方法 Apr 02, 2025 am 07:48 AM

Debianシステム上のOracleデータベースのセキュリティを強化するには、開始するには多くの側面が必要です。次の手順は、セキュアな構成のフレームワークを提供します。1。Oracleデータベースのインストールと初期構成システムの準備:Debianシステムが最新バージョンに更新され、ネットワーク構成が正しく、必要なすべてのソフトウェアパッケージがインストールされていることを確認します。インストールのために公式文書または信頼できるサードパーティのリソースを参照することをお勧めします。ユーザーとグループ:専用のOracleユーザーグループ(OINSTALL、DBA、BackUpDBAなど)を作成し、適切なアクセス許可を設定します。 2。セキュリティ制限リソース制限の設定:edit /etc/security/limits.d/30-oracle.conf

PythonインタープリターはLinuxシステムで削除できますか? PythonインタープリターはLinuxシステムで削除できますか? Apr 02, 2025 am 07:00 AM

Linux Systemsに付属するPythonインタープリターを削除する問題に関して、多くのLinuxディストリビューションは、インストール時にPythonインタープリターをプリインストールし、パッケージマネージャーを使用しません...

Investing.comの反クローラーメカニズムをバイパスするニュースデータを取得する方法は? Investing.comの反クローラーメカニズムをバイパスするニュースデータを取得する方法は? Apr 02, 2025 am 07:03 AM

Investing.comの反クラウリング戦略を理解する多くの人々は、Investing.com(https://cn.investing.com/news/latest-news)からのニュースデータをクロールしようとします。

プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は? プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は? Apr 02, 2025 am 07:18 AM

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

See all articles