【问题标题】:Best way to reuse my own function in new projects? [closed]在新项目中重用我自己的功能的最佳方式? [关闭]
【发布时间】:2021-12-14 22:00:08
【问题描述】:

在新项目中轻松添加功能的最佳方法是什么?我已经创建了一堆我自己创建的 Python 函数,这些函数经常用于我的项目,但是我忘记了我将它们全部放在哪里,并且当我更改它们时它们的版本变得不同步

我应该将所有这些函数添加到 pypi 吗?这似乎很耗时,尤其是因为其中很多都很小。

我还可以将函数保存为 .py 文件并将它们添加到我创建新项目的目录中,然后通过简单的导入来导入。但是这样做的问题是,如果我更改原始文件的某些内容,我需要跟踪我的函数文件的每个实例并用新文件替换它们。

我也可以使用绝对路径导入,我已经简要介绍过。它们看起来很烦人,但这可能比每次更改文件时都跟踪文件的每个副本更烦人。另一个大问题是我做了很多云计算,每次我从本地运行过渡到云上时都会破坏我的代码,并且无论如何都强制我复制代码。

这里有人遇到过类似的问题吗?您是否开发了一个很好的解决方案?有没有我没有想到的选择?欢迎所有建议!

【问题讨论】:

  • 打成包,在项目环境中安装包
  • 使用sys.path将包含你的模块的目录添加到其他项目的搜索路径中。
  • @SSCFan,我的意思是创建一个基本的setup.py 并运行python setup.py sdist 来制作本地包。如果它是其他人也可以使用的东西,那么pypi 可能是个好主意,但不是必需的。
  • 我的最后一个建议是查看cookiecutter 之类的内容,它允许您在创建新项目时定义模板,以便将现有代码填充到新项目中。当然,如果您想更改现有项目中的 utils 代码,这将不起作用。
  • 我在实验中所做的事情是制作一个函数包,然后将该文件夹移动到我的 Python 库目录中,使这组函数可用于所有项目(使用此站点:timothybramlett.com/…)。不知道这是否会引起问题,但那是我的 2 美分 :)

标签: python function import module package


【解决方案1】:

这是创建本地包的基本示例。

文件夹结构

root/
├─ mypackage/
│  ├─ __init__.py
│  ├─ func.py
setup.py

__init__.py

from .func import foo

setup.py

from distutils.core import setup


setup(name="mypackage",
      version='1.0',
      description='',
      packages=["mypackage"],
     )

func.py

def foo():
    print("foo")
    return

步骤

构建和安装

在终端中运行以下命令。 预先激活您的项目环境

cd root
python setup.py sdist
pip install ./dist/mypackage-1.0.tar.gz

用法

首先激活您的环境。然后在 python 控制台中运行以下命令:

>>> import mypackage
>>> mypackage.foo()
# foo

【讨论】:

    猜你喜欢
    • 2021-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-05
    相关资源
    最近更新 更多