如何创建一个简单的系统范围的python库?

时间:2016-03-31 03:59:47

标签: python

我看到有一些内置的包可以从任何脚本导入,如:

from datetime import date

today = date.today()
print today

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

5 个答案:

答案 0 :(得分:5)

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

首先安装setuptools包;在Windows或Linux上,您应该能够在终端上键入pip install setuptools以安装它。您现在应该能够在python提示符下编写import setuptools而不会收到错误。

一旦工作正常,请设置一个包含setup.py的目录结构和一个项目代码的文件夹。该目录必须包含一个名为__init__.py的文件,允许您{{1这个目录好像是一个文件。

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!" 。请注意,如果您使用的是Linux,则需要以root身份运行它,因为您正在对系统范围的python库进行更改。

在此之后,您应该能够从任何您喜欢的目录运行python并输入:

python setup.py install

请注意,这足以告诉您如何制作模块,但>>> from my_project import greeting >>> print greeting Hello world! >>> 可以为您做很多事情。有关构建内容的更多信息,请查看https://pythonhosted.org/setuptools/setuptools.html,有关模块实际工作方式的详细信息,请查看https://docs.python.org/2/tutorial/modules.html。如果您想查看一个(我希望)相当简单的包裹,那么我几周前在火车上制作了LazyLog module,欢迎您使用它作为参考。

答案 1 :(得分:2)

快速的方法是,如果您只是为了自己的使用而不必担心包装,就是将模块(可以像单个文件一样简单)放在系统的site-packages目录中。 (在基于Debian的系统上,you probably want to use dist-packages instead)。

要找出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!

答案 2 :(得分:0)

如果您确实需要软件包,可以使用boost进行,它允许与C ++交互。您可以使用C ++实现算法并将其编译为Python库。然而,它的记录很差。正如doc所述,C API应该是一个基本选项。 Boost以任何方式构建在C API上。

Sample:几年前我在一堂课上做过。你可以这样做:import tfidf

答案 3 :(得分:0)

如果您只是希望该模块供个人使用,只需将其放在一个文件夹中,然后将该文件夹添加到PYTHONPATH环境变量中。

例如,在主目录中创建一个名为~/python-packages的文件夹,然后将以下行添加到.bashrc(假设您使用的是bash):

 export PYTHONPATH=$HOME/python-packages`

然后,只需删除要在~/python-packages中提供的所有模块/包。

答案 4 :(得分:-2)

将python脚本或程序包的路径添加到sys.path或只是将它们移动到sys.path中的某个位置。 但我不建议这样做......