You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何打包Python辅助文件Aux.py使其自带依赖?

问题描述

我有一个用于标准化常用数据库连接的辅助Python文件Aux.py,内容如下:

import pyodbc, sqlalchemy

def Func1(param1, param2):
    return something

在其他项目中,我通过main.py脚本添加路径的方式导入使用其中的函数:

module_path = r'C:\Users\mypath'
if module_path not in sys.path:
    sys.path.append(module_path)

from Aux_File import Func1, Func2

现在遇到的问题是,main.py会在不同的虚拟环境(venv)中运行,每次都得手动确保对应环境安装了pyodbc、sqlalchemy这些依赖。想问问能不能把Aux.py打包成包含自身所有依赖的形式,省去重复安装的麻烦?

可行解决方案
  • 打包成独立可执行文件(适合直接调用功能而非导入函数)
    用PyInstaller可以把Aux.py打包成不依赖本地Python环境的单文件可执行程序,但这种方式生成的是可执行文件,没法在其他Python脚本中导入使用。如果你的需求是直接运行功能而非导入函数,这个方法可行,执行命令:

    pyinstaller --onefile Aux.py
    
  • 打包成Python轮子(Wheel)推荐方案
    这是最适合Python模块复用的方式,能让Aux.py像标准第三方库一样安装,且自动处理依赖:

    1. 先把Aux.py整理成标准包结构:
      my_db_utils/
          __init__.py
          Aux.py
      setup.py
      
    2. 编写setup.py声明依赖:
      from setuptools import setup, find_packages
      
      setup(
          name="my-db-utils",
          version="0.1",
          packages=find_packages(),
          install_requires=[
              "pyodbc>=4.0.0",
              "sqlalchemy>=2.0.0"
          ]
      )
      
    3. 打包生成wheel文件:
      python setup.py bdist_wheel
      
    4. 在目标虚拟环境中安装这个wheel包,安装时会自动下载并安装所需依赖:
      pip install path/to/my-db-utils-0.1-py3-none-any.whl
      
      之后在main.py里就可以直接导入,不用再手动加路径:
      from my_db_utils.Aux import Func1, Func2
      
  • 导出依赖清单简化安装
    如果不想打包成标准包,也可以先在装有依赖的环境里导出依赖清单:

    pip freeze > requirements.txt
    

    之后在新的虚拟环境里直接执行:

    pip install -r requirements.txt
    

    这种方式虽然还是要安装依赖,但不用手动逐个输入包名,能省不少事。

内容的提问来源于stack exchange,提问作者kips

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 00:55:35