安装 Python 轮子时如何通过 pip 选项创建模块?

问题描述 投票:0回答:1

我正在尝试使用

pip install
命令提供的信息生成一个 Python 模块。我的项目具有以下结构:

top_repository/
         |/setup.py
         |/requirements.txt
         |/my_proj
                |/__init__.py
                |/__main__.py
                |/_version.py
                |/conf.py

setup.py
是:

from setuptools import setup, find_packages
from distutils.util import convert_path

def get_requirements():
    with open('requirements.txt') as fp:
        return fp.read()

def get_version():
    st = {}
    version_file = convert_path('my_proj/_version.py')
    with open(version_file) as f:
        exec(f.read(), st)
    return st['_version']

setup(name='my_proj',
      version=get_version(),
      description='My Proj',
      packages=find_packages(),
      zip_safe=False)

然后,我用

python setup.py bdist_wheel

创建轮子

我正在寻找一种从 pip 选项获取参数的方法,并在 Wheel 安装期间将参数(例如

--cfg_dir
)添加到
conf.py
文件中。例如,如果我运行:

$ pip install my_proj-0.0.1-py3-none-any.whl --target /usr/alternate/site-packages --cfg_dir /path/to/cfg_dir

Pip/setuptools 将更新

conf.py
为:

CONF_DIR="/path/to/cfg_dir"

我正在使用 Python 3.9.18 和 setuptools 53.0;0

我感谢任何帮助!预先感谢。

此时,我一直在寻找没有任何好的指点。

python python-3.x pip setuptools
1个回答
0
投票
  • 修改 setup.py 以包含自定义命令 您可以扩展安装命令以包含自定义行为。

    从setuptools导入setup,find_packages 从 distutils.util 导入 Convert_path 从 setuptools.command.install 导入安装 导入操作系统

    def get_requirements(): 以 open('requirements.txt') 作为 fp: 返回 fp.read()

    def get_version(): st = {} version_file = Convert_path('my_proj/_version.py') 将 open(version_file) 作为 f: exec(f.read(), st) 返回 st['_version']

    类自定义安装命令(安装): """自定义 setuptools 安装命令 - 使用 CFG_DIR 更新 conf.py。""" def 运行(自我): # 调用标准安装流程 安装.运行(自己)

         # Get the CFG_DIR from environment variables
         cfg_dir = os.environ.get('CFG_DIR')
    
         if cfg_dir:
             conf_file_path = convert_path('my_proj/conf.py')
             with open(conf_file_path, 'a') as conf_file:
                 conf_file.write(f'\nCONF_DIR="{cfg_dir}"\n')
    

    设置( 名称='my_proj', 版本=get_version(), 描述='我的项目', 包=find_packages(), zip_safe=假, cmdclass={ “安装”:自定义安装命令, } )

  • 安装前设置环境变量

安装软件包时,将环境变量 CFG_DIR 设置为所需的配置目录。

export CFG_DIR="/path/to/cfg_dir"
pip install my_proj-0.0.1-py3-none-any.whl --target /usr/alternate/site-packages

CustomInstallCommand:此类扩展了安装命令以包含其他行为。它通过将 CONF_DIR 变量附加到 CFG_DIR 环境变量中指定的路径来修改 conf.py。

  • 列出项目
© www.soinside.com 2019 - 2024. All rights reserved.