我以这种方式使用 distutils 在 python 中制作了一个包:
#! /usr/bin/env python
from distutils.core import setup
setup(name='mypackage4.py',
version='1.0',
description='Description',
packages=['mypackage4']
)
setup.py 然后将它安装到我的 python2.7/site-packages 目录。
当我跑
import mypackage4
它尝试运行 mypackage4 目录中的 .py 文件。该目录包含包含函数(def 命令)的 python 文件。我要做的就是使这些功能可供使用,而不是直接在导入时运行。
但是,如果我这样做
cd python2.7/site-packages
然后进行导入,以便它在本地获取 mypackage4,它在不运行任何东西的情况下导入,所以我可以以正常方式从 python 命令行访问这些函数。
为什么python似乎在包不在本地目录时运行函数,但在包在本地目录时不运行函数?
其次,我读到了关于放置一个
if __name__ == '__main__':
pass
else:
<define functions here>
我的 .py 文件中的命令以防止它们运行,但是它肯定不会运行这些函数,那么它是如何知道它们的呢?
任何帮助是极大的赞赏!
ps,(以防万一)在我的包目录中,我有一个__init__.py
文件告诉python要导入哪些文件
__all__ = [
'pyfile1',
'pyfile2',
'pyfile3',
]