如何使自己的本地包可以像 pip 安装包一样导入?

How to make own local package importable the same way as pip installed packages?

如何将我自己的包保存到 conda 环境中,以便在环境激活后可以从任何位置导入它?

当我们 conda activate my_envpip install package 时,无论 file.py 的位置如何,都可以导入 package。一旦 my_env 被激活,我该怎么做才能让我的 own_local_package 以同样的方式导入?

你可以在本地使用pip来安装包,使用import mypackage和其他模块一样,正确的方法是:

python -m pip install -e /path_to_package/mypackage/

  • python -m 确保您正在使用来自您当前正在使用的相同 python 安装的 pip 包。

  • -e 使其可编辑,i/e import mypackage 将在您进行一些更改后重新加载,而不是使用缓存的。

mypackage 必须包含一个 __init__.py 文件,以及基本 setup.py(或 pyproject.toml 文件用于 pipenv

包结构必须是这样的:

mypackage/
    setup.py
    mypackage/
        __init__.py

最小setup.py

from setuptools import find_packages, setup

setup(
    name='mypackage',              # Required
    version='0.0.1',           # Required
    packages=find_packages(),  # Required
)

更详细的包:

包结构必须是这样的:

mypackage/
    setup.py
    mypackage/
        src/
            __init__.py
            __main__.py
            additional python files
            ...

最小setup.py

from setuptools import find_packages, setup

setup(
    name='mypackage',                          # Required
    version='0.0.1',                       # Required
    packages=find_packages(where="/src"),  # Required
)