如何构建像 pandas/numpy 这样的包,其中 pd/np 是一个具有所有功能的 object
How to build package like pandas/numpy where pd/np is an object with all the functions
根据标题,我正在尝试自己构建一个 python 包,我已经熟悉编写 python 包阅读来自 https://packaging.python.org/en/latest/tutorials/packaging-projects/ and https://docs.python.org/3/tutorial/modules.html#packages 的笔记。这些让我知道了如何编写一堆 object class/functions 我可以导入它们。
我想要的是写一个像 pandas 和 numpy 这样的包,我 运行 导入它们,它们作为“object”工作,也就是说 most/all 函数在封装后加点。
例如导入后
import pandas as pd
import numpy as np
pd
和 np
将具有所有功能,可以用 pd.read_csv()
或 np.arange()
调用, 运行 宁 dir(pd)
和 dir(np)
会给我所有可用的功能。我试着查看 pandas src 代码来尝试复制它们的功能。但是,我做不到。也许我缺少或误解了其中的某些部分。非常感谢任何帮助或指出正确的方向来帮助我做到这一点。
在一个更一般的例子中,我想写一个包并导入它以在它后面点缀功能。例如。 import pypack
并且我可以调用 pypack.FUNCTION()
而不是必须像这样导入该函数 from pypack.module import FUNCTION
并调用 FUNCTION()
或将其作为子模块导入。
我希望我的问题有意义,因为我没有接受过正式的写入软件培训。
假设您有一个名为 my_library
.
的模块(包)
.
├── main.py
└── my_library/
└── __init__.py
/my_library/__init__.py
def foo(x):
return x
在您的 main.py
中,您可以导入 my_library
import my_library
print(my_library.foo("Hello World"))
带有__init__.py
的目录将是您的包,可以导入。
现在考虑一个更深入的例子。
.
├── main.py
└── my_library/
├── __init__.py
└── inner_module.py
inner_module.py
def bar(x):
return x
在你的/my_library/__init__.py
中你可以添加
from .inner_module import bar
def foo(x):
return x
您可以在主程序中使用 bar()
,如下所示
import my_library
print(my_library.foo("Hello World"))
print(my_library.bar("Hello World"))
根据标题,我正在尝试自己构建一个 python 包,我已经熟悉编写 python 包阅读来自 https://packaging.python.org/en/latest/tutorials/packaging-projects/ and https://docs.python.org/3/tutorial/modules.html#packages 的笔记。这些让我知道了如何编写一堆 object class/functions 我可以导入它们。
我想要的是写一个像 pandas 和 numpy 这样的包,我 运行 导入它们,它们作为“object”工作,也就是说 most/all 函数在封装后加点。
例如导入后
import pandas as pd
import numpy as np
pd
和 np
将具有所有功能,可以用 pd.read_csv()
或 np.arange()
调用, 运行 宁 dir(pd)
和 dir(np)
会给我所有可用的功能。我试着查看 pandas src 代码来尝试复制它们的功能。但是,我做不到。也许我缺少或误解了其中的某些部分。非常感谢任何帮助或指出正确的方向来帮助我做到这一点。
在一个更一般的例子中,我想写一个包并导入它以在它后面点缀功能。例如。 import pypack
并且我可以调用 pypack.FUNCTION()
而不是必须像这样导入该函数 from pypack.module import FUNCTION
并调用 FUNCTION()
或将其作为子模块导入。
我希望我的问题有意义,因为我没有接受过正式的写入软件培训。
假设您有一个名为 my_library
.
.
├── main.py
└── my_library/
└── __init__.py
/my_library/__init__.py
def foo(x):
return x
在您的 main.py
中,您可以导入 my_library
import my_library
print(my_library.foo("Hello World"))
带有__init__.py
的目录将是您的包,可以导入。
现在考虑一个更深入的例子。
.
├── main.py
└── my_library/
├── __init__.py
└── inner_module.py
inner_module.py
def bar(x):
return x
在你的/my_library/__init__.py
中你可以添加
from .inner_module import bar
def foo(x):
return x
您可以在主程序中使用 bar()
,如下所示
import my_library
print(my_library.foo("Hello World"))
print(my_library.bar("Hello World"))