小编gbr*_*gdl的帖子

Python的setup.py安装的CLI脚本不允许导入相同的模块

我想创建一个名为knife的python应用程序,可以从CLI执行,问题是它无法导入模块.我遵循与Django项目相同的文件夹结构以供参考.

我的目录结构是这样的:

knife/
    knife/
        bin/
            knife-cli.py
        core/
            main/
                __init__.py
            __init__.py
        __init__.py
    setup.py
Run Code Online (Sandbox Code Playgroud)

setup.py看起来像这样:

#!/usr/bin/env python

from setuptools import setup, find_packages

exclude = ['knife.bin']

setup(name='Knife',
      version='0.3',
      description='Very cool project',
      author='John Doe',
      author_email='author@email.com',
      packages=find_packages(exclude=exclude),
      include_package_data=True,
      scripts=['knife/bin/knife-cli.py'],
      entry_points={
        'console_scripts': [
            'knife-cli = knife.core.main:main'
        ]
      },
      zip_safe=False,
     )
Run Code Online (Sandbox Code Playgroud)

我的knife/core/main/__init__.py包含一个main()函数,我的knife/bin/knife-cli.py样子如下:

#!/usr/bin/env python

from knife.core import main

if __name__ == "__main__":
    main.main()
Run Code Online (Sandbox Code Playgroud)

所以在使用setup.py install安装模块之后,我尝试运行knife-cli但继续抛出此错误:

$ knife-cli 
Traceback (most recent call last):
  File "/usr/bin/knife-cli", line 9, in <module>
    load_entry_point('Knife==0.3', …
Run Code Online (Sandbox Code Playgroud)

python module setuptools

5
推荐指数
2
解决办法
2688
查看次数

记录到多个输出

是否有一种方法可以将语言记录到不同级别的多个输出中?

我希望有一个程序可以在Info级别中记录到stdout,同时在调试级别记录一个带有时间戳的文件.

就像我每次编码一样:

log.Debug("Entering some func")
res := func()
log.Infof("Result was: %s", res)
Run Code Online (Sandbox Code Playgroud)

我可以看到控制台打印:

Result was: Successful
Run Code Online (Sandbox Code Playgroud)

和一个文件:

2015-03-26T01:27:38-04:00 [DEBU]: Entering some func
2015-03-26T01:27:38-04:00 [INFO]: Result was: Successful
Run Code Online (Sandbox Code Playgroud)

我使用logrus和glog,但找不到这个功能.还有其他包或我可以编码的东西吗?

logging go

3
推荐指数
2
解决办法
2644
查看次数

标签 统计

go ×1

logging ×1

module ×1

python ×1

setuptools ×1