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

如何从公共共享文件夹中按需导入指定的Python包?

实现方法

有两种无需每次修改setup.py的实现方案,你可以根据自己的使用场景选择:

方案1:环境变量动态控制打包范围(改一次setup.py即可)

只需修改一次setup.py,增加通过环境变量筛选打包模块的逻辑,后续安装时传入对应参数即可指定要安装的模块:

  1. 修改后setup.py代码:
from setuptools import setup, find_packages
import os

# 读取环境变量配置的模块列表,多个模块用英文逗号分隔,未配置则默认安装所有模块
enable_modules = os.getenv("COMMON_ENABLE_MODULES", "").strip()
if enable_modules:
    target_modules = [m.strip() for m in enable_modules.split(",")]
    packages = [pkg for pkg in find_packages() if pkg.split(".")[0] in target_modules]
else:
    packages = find_packages()

setup(
    name='Common',
    version='0.1',
    description='Common Code',
    author='Me',
    license='MIT',
    packages=packages,
    zip_safe=False
)
  1. Proj1环境仅安装CommonA的执行命令:
  • Windows环境:
set COMMON_ENABLE_MODULES=CommonA && pip install .\Common
  • Linux/Mac环境:
COMMON_ENABLE_MODULES=CommonA pip install ./Common

如果需要同时安装多个模块,只需修改环境变量的值,用英文逗号分隔模块名即可,例如COMMON_ENABLE_MODULES=CommonA,CommonC。

方案2:拆分独立子包(适合公共模块持续迭代的场景)

如果后续你会新增大量公共模块,可直接将每个子模块改造为独立的可分发包,各自维护setup.py,目录结构调整如下:

/Development
    /Common
        /CommonA
            __init__.py
            setup.py
            commonA.py
        /CommonB
            __init__.py
            setup.py
            commonB.py

每个子模块的setup.py单独配置自身的元信息,之后哪个项目需要某个模块,直接安装对应子目录即可,例如Proj1安装CommonA执行:

pip install .\Common\CommonA

这种方式完全不需要修改公共配置,各模块独立分发、互不影响,适合公共库复杂度较高的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 20:45:03