安装 local/personal 库,以便 python 项目可以直接导入它

Install a local/personal library so it can be imported directly by a python project

我有一个愚蠢的问题,但到目前为止我还没有找到任何提及它的地方。我在 Python 中创建了一个 .py 文件,其中包含我在工作中使用的所有函数。每当我需要在脚本中使用它们时,我必须解决 .py 文件所在文件夹的路径,如下面的脚本。

import os
os.chdir('...\path-to-my-file')
import my-file as mfl

我的问题是:有没有什么办法可以将包含我的函数的 .py 文件保存在 Anaconda 的根目录下,并像调用 Numpy 一样调用它?我知道库在 'C:\Users\User\anaconda3\Lib' 文件夹中,所以我可以直接保存到该文件夹​​并以更简化的方式调用它,例如:

import numpy as np
import my-file as mfl

如果可行,是否有标准化的代码编写方式?

我建议您创建一个名为 PYTHONPATH 环境变量 ,它将为您指明附加功能。如果您不确定自己在做什么,最好保留 anaconda root 原样。 More on this here.

为了能够像处理任何其他模块一样import mypackage,正确的方法是在本地使用 pip:

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

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

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

mypackage 必须是可安装包,i/e 包含 __init__.py 文件,以及一个基本的 setup.py(或 pyproject.toml 文件用于 pipenv

最小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/    <----- this is a folder inside the other `mypackage/` folder
        __init__.py

或作为一棵树:

└── python_perso                folder
    └── mypackage                   folder
        ├── mypackage                   folder
        │   └── __init__.py
        └── setup.py

[edit] 安装后目录如下:
(对于名为 mypackage 的包)

└── python_perso
    └── mypackage
        ├── mypackage
        │   ├── __init__.py
        │   └── __pycache__
        │       └── __init__.cpython-38.pyc
        ├── mypackage.egg-info
        │   ├── PKG-INFO
        │   ├── SOURCES.txt
        │   ├── dependency_links.txt
        │   └── top_level.txt
        └── setup.py

5 directories, 7 files