我是一名Ruby程序员,正在开发我的第一个Python包(我们称之为foo)。它的主要用途是作为命令行工具。我指定它应该作为setup.py
中的可执行文件安装,使用:
setup(
entry_points={
'console_scripts': [
'foo = foo.cli:main'
]
}
)
foo/cli.py
包含:
import foo
def main():
# program logic here
if __name__ == '__main__':
main()
cli.py
需要引用在foo/__init__.py
中定义的foo.__version__
,但是当我在本地运行python foo/cli.py
来测试CLI时,import foo
会引发ImportError: No module named foo
。我怎样才能让Python看到客户端在foo包的上下文中运行这样的单个文件时?我的方法完全错了吗?您通常如何在本地测试用setuptools的入口点定义的可执行文件?你知道吗
您缺少修改
sys.path
或PYTHONPATH
变量以同时包含foo/所在的目录。你知道吗在运行客户端文件执行以下操作
在我的设置中,foo/出现在~/python中,foo/中的\em>init\upy告诉python解释器,foo是一个包,而不是一个普通目录。你知道吗
现在您可以
cd
进入foo/目录,然后运行python cli.py
。您将能够访问foo包方法和函数。你知道吗或者,在main()中,您可以首先修改
sys.path
,以附加包含foo/的目录,然后执行其余的逻辑引用Python documentation on Modules:
在包中,可以直接导入
__init__
,然后使用as
重命名。试试这个代替
相关问题 更多 >
编程相关推荐