我看到有一些内置的包可以从任何脚本导入,如:
from datetime import date
today = date.today()
print today
如何创建一个简单的包并将其添加到系统库中,以便我可以像上面示例中的datetime
一样导入它?
答案 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中的某个位置。 但我不建议这样做......