我如何创建一个简单的系统级Python库?

12 浏览
0 Comments

我如何创建一个简单的系统级Python库?

我注意到有一些内建包可以在任何脚本中导入,比如:

from datetime import date
today = date.today()
print today

我该如何创建一个简单的包并将其添加到系统库中,以便像上面的datetime那样导入它?

admin 更改状态以发布 2023年5月21日
0
0 Comments

如果你只是为了自己使用而不关心打包,最快捷的方法是将模块(可以是一个单独的文件)放置于系统的site-packages目录中。(在基于Debian的系统中,你可能想使用dist-packages代替)。

要查找site-packages/dist-packages目录所在位置,请打开Python并键入:

>>> from sys import path
>>> path
['', '/usr/lib/python3.4/site-packages/pip-7.1.2-py3.4.egg', '/usr/lib/python34.zip', '/usr/lib/python3.4', '/usr/lib/python3.4/plat-cygwin', '/usr/lib/python3.4/lib-dynload', '/usr/lib/python3.4/site-packages']

请注意上面示例中的最后一项:/usr/lib/python3.4/site-packages。这就是你要查找的内容。所以,在这个例子中,如果我将以下内容保存到/usr/lib/python3.4/site-packages/foo.py中:

def bar():
    print('Hello world!')

那么,无论在我系统的哪个地方:

>>> from foo import bar
>>> bar()
Hello world!

0
0 Comments

你正在尝试制作一个模块。

首先需要安装setuptools包; 无论是在Windows还是Linux上,您都应该能够在终端上输入pip install setuptools 来安装它。现在你应该能够在Python提示符下写入 import setuptools而不会出现错误。

一旦这个工作正常,设置一个目录结构,其中包含一个setup.py文件和一个放置项目代码的文件夹。目录必须包含一个名称为__init__.py的文件,它允许您像导入文件一样import目录。

some_folder/
|    setup.py
|    my_project/__init__.py

setup.py中,插入以下内容:

# setup.py
from setuptools import setup
setup(name="My Awesome Project",
      version="0.0",
      packages=["my_project"])

my_project/__init__.py中,插入一些您想导入的内容。假设...

# my_project/__init__.py
greeting = "Hello world!"

现在,为了在系统范围内安装项目,请运行python setup.py install。请注意,如果您在Linux上,您需要以root身份运行此命令,因为您正在修改系统级别的Python库。

完成后,您应该能够从任何您喜欢的目录运行python,并键入:

>>> from my_project import greeting
>>> print greeting
Hello world!
>>>

请注意,这已经足够告诉您如何制作模块,但setuptools可以为您做更多的事情。请查看https://pythonhosted.org/setuptools/setuptools.html以获取有关构建内容的更多信息,以及https://docs.python.org/2/tutorial/modules.html以了解有关模块实际工作的更多信息。如果您想查看一个(我希望)相当简单的软件包,那么几个星期前我在一列车上做了我的LazyLog模块,您可以参考它。

0